# rust-learning **Repository Path**: fsxl/rust-learning ## Basic Information - **Project Name**: rust-learning - **Description**: 学习rust的仓库 - **Primary Language**: Rust - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-23 - **Last Updated**: 2023-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: rust学习 ## README # 1. Rust模块之间的关系 有一个crate的概念,书上说到:当编译一个crate的时候,编译器会首先去找root crate file, 也就是`src/main.rs` 这种二进制crate和`src/lib.rs` 这种库crate 在root crate file中,我们可以定义新的module,比如我们定义`mod graden`,这样编译器会去找module的代码,有一下几种情况: 1. 内置的模块:也就是在`mod graden`后边加大括号`mod graden {}` 2. 在文件`src/graden.rs`中 3. 在文件`src/graden/mod.rs`中 ## 定义子模块 我们可以在除了主文件的其他rust文件中定义子模块,比如我们在garden中定义子模块vegetables,那么就是在`src/graden.rs`中定义`mod vegetables;`, 如果这个模块想让别人看到,就是`pub mod vegetables;`. 我们仍旧有三种方式定义模块的代码内容。 1. 内置模块:在`src/graden.rs`中直接定义`pub mod vegetables {}` 2. 在文件`src/graden/vegetables.rs`中 3. 在文件`src/garden/vegetables/mod.rs`中 ## 引入模块中的代码 我们可以直接使用路径来引入模块中的代码,参考main.rs里边的potatoes,也可以使用use把代码路径引入到scope中 # 2. 创建lib模块并使用lib模块 我们使用`cargo run xxxxx --lib`创建lib模块,里边没有`src/main.rs`与之替代的是`src/lib.rs`