src/main.rs:是binary crate的根,也就是主函数入口文件,cargo run的时候,默认执行这个文件 src/lib.rs:是library crate的根,同样也是一个主函数入口文件 上面两个概念挺阴间的,更加阴间的是,cargo new XXX(包名),这时候main.rs和lib.rs也是同名为xxx的。 对于多个binary文件(可执行),可以放在src/bin下,调用...
在库crate中,代表的是lib.rs;在二进制crate中,代表的是main.rs。 使用自己的crate名代表的是其库crate 假设crate名为xxtest,那么xxtest::name()也就是在调用库crate中的函数name。 值得一提的是,自己的crate名在只有在main.rs和lib.rs同时存在的时候才会赋予特殊的含义,并只在二进制crate中可用; 值得二提的...
选择Binary(application), 它会默认生成main.rs (main.rs是binary crate, 后面会介绍) 如果选了Library, 它会默认生成lib.rs (lib.rs是liberary crate) 然后下一步下一步地搞, 此处项目命名为"hello" 3.项目结构 上面的lib.rs是我为了解释方便手动加的, 其他都是自动生成的. RUST使用Cargo来构建系统和包管理...
实际上,你去探索上述命令行生成的文件,发现它们的 Cargo.toml 完全一样,区别仅在于 src 目录下,可执行工程是一个 main.rs,而库工程是一个 lib.rs。 这是因为 main.rs 和 lib.rs 对于一个 crate 来讲,是两个特殊的文件名。rustc 内置了对这两个特殊文件名的处理(当然也可以通过 Cargo.toml 进行配置,不...
实际上,你去探索上述命令行生成的文件,发现它们的 Cargo.toml 完全一样,区别仅在于 src 目录下,可执行工程是一个 main.rs,而库工程是一个 lib.rs。 这是因为 main.rs 和 lib.rs 对于一个 crate 来讲,是两个特殊的文件名。rustc 内置了对这两个特殊文件名的处理(当然也可以通过 Cargo.toml 进行配置,不...
rust约定在Cargo.toml的同级目录下包含src目录并且包含main.rs文件,就是与包同名的二进制crate,如果包目录中包含src/lib.rs,就是与包同名的库crate。包内可以有多crate,多个crates就是一个模块的树形结构。如果一个包内同时包含src/main.rs和src/lib.rs,那么他就有两个crate,如果想有多个二进制crate,rust约定...
└── main2.rs 在src里,再加2个文件lib.rs及main2.rs,内容如下: lib.rs + View Code main2.rs + View Code 同时把main.rs里也加一行demo_1::foo(),让它调用lib.rs里的foo()方法 1 2 3 4 fnmain() { demo_1::foo(); println!("Hello, world!"); ...
如上将mod.rs同级目录下的xx/aa.rs和xx/bb.rs声明为模块,此处mod aa;相当于mod aa {}。外部使用时,再声明模块xx modxx; 然后就可以通过use xx::aa::*;引入使用aa中的公有方法。 Rust 的多层模块查找规则: 优先在当前层级查找aa.rs文件 1)main.rs、lib.rs、mod.rs中的mod aa;默认优先查找同级目录下...
│ mod.rs │ ├─src │ main.rs │ └─xml │ Cargo.toml │ └─src lib.rs 根目录下是一个workspace项目,对于workspace陌生可以看上篇文章《workspace详解》,我们使用Root package这种方式定义根项目,它依赖json和xml两个crate。 在Rust中模块有 4 种方式表示: ...
我们会发现并没有提到 src/main.rs,因为 Cargo 遵循的一个约定:src/main.rs 就是一个与包同名的二进制 crate 的 crate 根。同样的,Cargo 知道如果包目录中包含 src/lib.rs,则包带有与其同名的库 crate,且 src/lib.rs 是 crate 根。crate 根文件将由 Cargo 传递给 rustc 来实际构建库或者二进制项目...