rust mod
2022-09-07 本文已影响0人
hehehehe
unresolved module, can't find module file: test_dir_mod.rs, or test_dir_mod/mod.rs
模块可以是file.rs,可以是dir/mod.rs
通过use mod 引入外部模块
如果模块名后面是;,而不是代码快,rust会从模块同名的文件中加载内容
test_dir_mod.rs 子模块必须有个同名文件夹放置子模块
文件夹下有mod.rs也可以是自成一个模块
package 和 crate
- crate 是一个二进制项(binary)或者库(library)
- package 可以包含任意多个二进制 crate(binary crate),但是至多包含一个库 crate(library crate)。必须至少包含一个 crate(无论是库的还是二进制的)。一个包会包含有一个 Cargo.toml 文件,阐述如何去构建这些 crate。
src/main.rs 就是一个与包同名的二进制 crate 的 crate 根
src/lib.rs,则包带有与其同名的库 crate,且 src/lib.rs 是 crate 根
如果一个包同时含有 src/main.rs 和 src/lib.rs,则它有两个 crate:一个二进制的和一个库的,且名字都与包相同
src/bin 目录下,一个包可以拥有多个二进制 crate:每个 src/bin 下的文件都会被编译成一个独立的二进制 crate
引入外部依赖
[package]
name = "poi_rs"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
geos = "8.1.0"
在 Cargo.toml 中加入 geos 依赖告诉了 Cargo 要从 crates.io 下载 geos 和其依赖,并使其可在项目代码中使用。
为了将 geo 定义引入项目包的作用域,我们加入一行 use 起始的包名,它以 rand 包名开头并列出了需要引入作用域的项
use geos::Geom;
mod && use
mod 组织模块树,挂到root下
Organize code into modules.
use
Import or rename items from other crates or modules.
Usually a use keyword is used to shorten the path required
mod test_dir_mod;
mod test_file_mod;
use test_file_mod as aa;
fn main() {
println!("Hello, world!");
crate::test_dir_mod::test_dir_mod_mod::intersect_test();
crate::test_dir_mod::test_dir_mod_mod::test_dir_mod_mod_mod::test_dir_mod_mod_mod_fn();
crate::test_file_mod::test_file_mod_fn();
crate::test_file_mod::test_file_mod_mod::test_file_mod_mod_fn();
aa::test_file_mod_fn();
aa::test_file_mod_mod::test_file_mod_mod_fn();
}