rust mod

2022-09-07  本文已影响0人  hehehehe

https://rustwiki.org/

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

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();
}

上一篇 下一篇

猜你喜欢

热点阅读