发布到crates.io的crate中main()会被忽略吗?需删除main.rs吗?
发布Rust Crate到crates.io时main.rs的处理方式
不需要删除main.rs,它默认不会被包含在发布到crates.io的包中,除非你在Cargo.toml里做了特殊配置。具体原因和注意事项如下:
- Cargo默认区分库 crate和二进制 crate:
lib.rs是库的入口,对应你要分享的公开结构和文档;而main.rs是默认的二进制目标入口,仅用于本地开发测试。 - 发布crate时,默认只会打包库相关的代码(
lib.rs以及[lib]配置段指定的内容),二进制目标(main.rs对应的可执行文件)不会被纳入发布包。 - 如果你在Cargo.toml里显式添加了
[[bin]]配置段并关联了这个main.rs,那这个二进制目标会被一起发布。但如果只是默认的main.rs(没加[[bin]]配置),就完全不用担心。
额外建议:
- 保留
main.rs完全没问题,它可以继续作为你本地测试的入口,不会影响发布的库代码。 - 要是怕不小心配置了二进制发布,也可以给
[[bin]]段加上publish = false,确保它不会被发布:[[bin]] name = "your_crate_test_bin" path = "src/main.rs" publish = false
内容的提问来源于stack exchange,提问作者workerjoe
相关产品推荐
相关产品推荐

