然后在crate里,又可以创建一堆所谓的mod(模块),因此整体的关系,大致象下面这张图: 即: 1个Package里,至少要有1种Crate(要么是Library Crate,要么是Binary Crate) 1个Package里,最多只能有1个Library Crate 1个Package里,可以有0或多个Binary Crate 1个Crate里,可以创建0或多个mod(后面还会详细讲mod) 二、cr...
然后在crate里,又可以创建一堆所谓的mod(模块),因此整体的关系,大致象下面这张图: 即: 1个Package里,至少要有1种Crate(要么是Library Crate,要么是Binary Crate) 1个Package里,最多只能有1个Library Crate 1个Package里,可以有0或多个Binary Crate 1个Crate里,可以创建0或多个mod(后面还会详细讲mod) 二、cr...
Binary Crate:有一个main函数,编译后生成可执行文件。 Library Crate:没有main函数,主要用作库供其他crate调用。 构成:一个 crate 通常由一个lib.rs或main.rs文件作为入口。 关键特性: Rust 编译器一次只能编译一个 crate。 一个crate的作用域由mod(模块)系统进一步划分。 示例: src/ main.rs# Binary crate ...
mod front_of_house{pub mod hosting{fnadd_to_waitlist(){}}}pub fneat_at_restaurant(){// 绝对路径crate::front_of_house::hosting::add_to_waitlist();// 相对路径front_of_house::hosting::add_to_waitlist();} cargo build的时候,代码编译仍然有错误。 在modhosting前添加了pub关键字,使其变成...
从crate 根节点开始 当编译一个 crate, 编译器首先在crate 根文件(通常,对于一个库 crate而言是src/lib.rs,对于一个二进制 crate而言是src/main.rs)中寻找需要被编译的代码。 声明模块(Module) 在crate 根文件中,你可以声明一个新模块; 比如,你用mod garden声明了一个叫做garden的模块。编译器会在下列路径中...
从crate 根开始:编译 crate 时,编译器首先在 crate 根文件(通常 src/lib.rs 表示库 crate ,src/main.rs 表示二进制 crate)中查找要编译的代码。 声明模块:在 crate 根文件中,您可以声明新的模块;比如,你用 mod garden; 语句声明了一个叫“garden”的模块。编译器将在以下位置查找模块的代码: ...
上面创建了一个包,包名是hello,rust 默认在 src 生成了一个 main.rs 文件,该文件是一个 binary crate,crate 名也是hello 运行 使用cargo run可以编译运行项目,编译的是默认的 bianry carte,crate 名为hello的 main.rs 文件,最终生成一个可执行的二进制文件。可以使用--bin参数指定 binary crate,不指定就是默认...
在crate根部定义了一个新函数eat_at_restaurant,并在其中展示调用add_to_waitlist函数的两种方法。eat_at_restaurant函数是我们crate 库的一个公共API,所以我们使用pub关键字来标记它。 mod front_of_house {mod hosting {fn add_to_waitlist() {}}}pub fn eat_at_restaurant() {// 绝对路径crate::front_...
例如rand crate,访问它的功能需要通过它的名字:rand 🎯定义module来控制作用域和私有性 Module: 模块让我们可以将一个 crate 中的代码进行分组 提高可读性与重用性 利用模块控制项的私有性 建立module: —mod关键字 —可嵌套 —在模块内,我们还可以定义其他的模块,定义的其他项,比如结构体、枚举、常量、特性、或...
Module 在一个crate内,将代码进行分组。 增加可读性,易于复用。 控制项目(item)的私有性,通过public、private 通过mod 关键字创建module module 是可嵌套的。 module 可以包含其他项(struct、enum、常量、trait、函数等)的定义 代码测试 举一个例子比上面的文字更有意义: ...