Rust新手必看:cargo new命令的5个隐藏用法(附实战示例)
如果你刚开始接触Rust,大概已经熟悉了cargo new my_project这条基础命令。它帮你快速搭建起一个标准的项目骨架,省去了手动创建Cargo.toml和src目录的麻烦。但很多人可能不知道,这个看似简单的命令背后,其实藏着一系列能极大提升开发效率的“隐藏开关”。这些选项能帮你定制项目模板、适配不同工作流、甚至从一开始就规避掉一些常见的配置陷阱。今天,我们就来深入挖掘cargo new那些不为人知的高级用法,用具体的实战示例,让你从项目创建的第一步就领先别人一个身位。
1. 超越默认:创建库项目与指定Rust版本
绝大多数教程都告诉你,直接运行cargo new会创建一个可执行的二进制项目。这没错,但Rust的世界远不止于此。当你需要开发一个供其他项目使用的库(crate)时,默认的main.rs入口就不合适了。这时,--lib选项就是你的首选。
cargo new --lib my_awesome_lib
执行这条命令后,你会发现生成的src目录下不是main.rs,而是lib.rs。这是库项目的标准入口文件,你可以在里面定义模块、公开函数和结构体。Cargo.toml中的[package]部分也会自动适配,其name字段就是你指定的my_awesome_lib。这个细微的差别,决定了你项目的根本性质。
另一个常被忽略但至关重要的选项是--edition。Rust语言本身在持续演进,2015、2018、2021等版本(edition)在语法、关键字和默认行为上都有所不同。比如,2018 edition引入了更简洁的模块系统(use语句无需extern crate),而2021 edition则预置了更多实用的特性。如果你在团队中协作,或者要集成一个指定了edition的第三方库,在项目创建时就明确版本能避免后续的混淆。
cargo new --edition 2018 legacy_compatible_project
查看新项目的Cargo.toml,你会看到类似这样的配置:
[package]
name = "legacy_compatible_project"
version = "0.1.0"
edition = "2018" # 这里明确指定了版本
注意:
edition的设置是项目级别的,一旦创建后虽然可以在Cargo.toml中手动修改,但涉及语法变更的部分可能需要调整代码。最佳实践是在项目初始化时就确定好。
为了更清晰地对比不同项目类型的初始结构,可以参考下表:
| 项目类型 | 命令示例 |
|---|

&spm=1001.2101.3001.5002&articleId=151952161&d=1&t=3&u=1193bbdc03b543d4912462e5f4673152)
4574

被折叠的 条评论
为什么被折叠?



