90% 的 Rust 新手都不知道的 3 个实用开发技巧今天分享 3 个 90% 的 Rust 新手都不知道但一旦用上就再也离不开的实用开发技巧帮助你在学习 Rust 的道路上少走弯路。dbg! 比 println! 更适合调试很多新手开发者倾向于使用println!宏进行调试但其实 Rust 提供了专门用于快速调试的输出宏dbg!。fnmain(){letx42;lety10;println!(x {},x);dbg!(x,y);dbg!(xy*2);}// Output:// x 42// [src/main.rs:6:5] x 42// [src/main.rs:6:5] y 10// [src/main.rs:7:5] x y * 2 62从上面的示例可以看到使用println!宏调试的时候需要手动写格式化字符串而使用dbg!宏则会自动打印表达式和值还带文件名和行号。除此之外dbg!宏还会返回传入表达式的值这使得它可以无缝插入到现有代码中不影响程序逻辑。fnmain(){letx10;lety20;letsumdbg!(x)dbg!(y);dbg!(sum);letsumdbg!(calculate(x,y));dbg!(sum);}fncalculate(a:i32,b:i32)-i32{ab}// Output:// [src/main.rs:5:15] x 10// [src/main.rs:5:25] y 20// [src/main.rs:6:5] sum 30// [src/main.rs:8:15] calculate(x, y) 30// [src/main.rs:9:5] sum 30dbg!宏不止可以直接嵌入表达式中还可以嵌入函数调用当中而这些是println!宏完全做不到的。非常的好用反正我现在调试基本就是用dbg!宏了。使用 todo! 宏占位todo!绝对是 Rust 标准库中最被低估且最实用的宏之一。在项目开发的早期时让我们能专注于思考核心逻辑而不被细节实现以及编辑器的报错打断。fncalculate_tax(income:f64)-f64{todo!()}fnmain(){lettaxcalculate_tax(10000.0);dbg!(tax);}在上面的示例中我们使用todo!宏进行占位但是暂不实现的函数细节。todo!本质上是一个会触发 panic 的宏所以当执行到它的时候就会抛出 panic。不过todo!宏有其明确的语义这段代码尚未实现后续需要补充。在实际使用时我强烈建议携带上下文信息如下所示fncalculate_tax(income:f64)-f64{todo!(执行步骤一 - 步骤二 - 步骤三)}同时它也支持式化字符串fncalculate_tax(income:f64)-f64{todo!(收入为{}执行步骤一 - 步骤二 - 步骤三,income)}如果你使用的是 VSCode 编辑器我强烈建议你装上 Todo Tree这个插件可以检索到代码中的todo!宏不过需要在其正则匹配的规则中添加上相应内容{todo-tree.regex.regex:(//|#|!--|;|/\\*|^|^[ \\t]*(-|\\d.))\\s*($TAGS)|todo!,}实际效果如下所示使用 bacon 进行热更新为了避免每次修改代码之后都需要重新手动编译一次。在实际开发过程中热更新方案是不可或缺的而 Rust 生态中最常用的热更新方案是 bacon。cargoinstall--lockedbacon安装完成后我们需要到项目根目录中初始化 bacon 配置文件。bacon--init它会自动生成bacon.toml配置文件我们需要在配置文件中配置任务。这次的示例中我们会用到它默认提供的任务run。首先执行bacon命令启动服务。接下来键入Ctrl-j打开任务列表我们切换到run任务。当在终端中看到相关的打印时意味着我们切换到run任务了。之后我们每次修改代码并保存bacon都会监听并重新执行任务。结语以上就是今天分享的 3 个 Rust 实用技巧这些技巧看似简单但却能在日常开发中节省大量时间和精力。希望这篇文章能对你有所帮助也祝愿每一位 Rust 新手在学习的道路上越走越顺。