[root@bogon app1]# cat Cargo.toml [package] name = "app1" version = "0.1.0" authors = ["magnate <liangeaglejun@sina.com>"] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] rand = "0.6.5" #[[bin]] #name = "hell" #path = "src/hell.rs" [root@bogon app1]#
[root@bogon app1]# ls src
greetings.rs main.rs
[root@bogon app1]# cat src/*
pub fn hello() { println!("Hello, world!"); }
extern crate rand; mod greetings; use rand::random; fn main() { let correct:u8 = random(); println!("correct value is {}",correct); greetings::hello(); } [root@bogon app1]#
[root@bogon app1]# cargo build Finished dev [unoptimized + debuginfo] target(s) in 0.02s [root@bogon app1]# cargo run Finished dev [unoptimized + debuginfo] target(s) in 0.02s Running `target/debug/app1` correct value is 59 Hello, world! [root@bogon app1]#
将mod分散到同一个路径下的不同文件中 // main.rs mod greetings; // import greetings module fn main() { greetings::hello(); } // greetings.rs // 不需要显示声明mod,默认即是文件名作为mod名 pub fn hello() { println!("Hello, world!"); } 如果mod文件中使用mod关键字包装: // ↳ main.rs mod phrases; fn main() { phrases::greetings::hello(); } // ↳ phrases.rs pub mod greetings { pub fn hello() { println!("Hello, world!"); } }
test2
https://juejin.im/entry/6844903721676046344
[root@bogon app1]# ls src/
main.rs phrases.rs
[root@bogon app1]#
[root@bogon app1]# cat src/* extern crate rand; mod phrases; use rand::random; fn main() { let correct:u8 = random(); println!("correct value is {}",correct); phrases::greetings::hello(); } pub mod greetings { pub fn hello() { println!("Hello, world!"); } }
/data2/rust/app1 [root@bogon app1]# cargo build Compiling app1 v0.1.0 (/data2/rust/app1) Finished dev [unoptimized + debuginfo] target(s) in 0.53s [root@bogon app1]# cargo run Finished dev [unoptimized + debuginfo] target(s) in 0.02s Running `target/debug/app1` correct value is 177 Hello, world!
mod.rs文件
mod.rs 是真个路径下的mod的入口文件,所有在同一路径下的文件都是它的子mod。
[root@bogon app1]# tree src/ src/ |-- lib1 | `-- mod.rs `-- main.rs 1 directory, 2 files [root@bogon app1]#
[root@bogon app1]# cat src/main.rs extern crate rand; mod lib1; use rand::random; fn main() { let correct:u8 = random(); println!("correct value is {}",correct); lib1::hello(); } [root@bogon app1]# cat src/lib1/mod.rs pub fn hello() { println!("Hello, world!"); } [root@bogon app1]#
test3
在mod.rs 使用pub mod xxx 声明需要到出的mod
[root@bogon app1]# tree src src |-- lib1 | |-- greeting.rs | `-- mod.rs `-- main.rs 1 directory, 3 files [root@bogon app1]# cat src/lib1/greeting.rs pub fn hello() { println!("Hello, world!"); } [root@bogon app1]# cat src/lib1/mod.rs pub mod greeting; [root@bogon app1]# cat src/main.rs extern crate rand; mod lib1; use rand::random; fn main() { let correct:u8 = random(); println!("correct value is {}",correct); lib1::greeting::hello(); } [root@bogon app1]#
[root@bogon app1]# cargo build Compiling app1 v0.1.0 (/data2/rust/app1) Finished dev [unoptimized + debuginfo] target(s) in 0.52s [root@bogon app1]# cargo run Finished dev [unoptimized + debuginfo] target(s) in 0.02s Running `target/debug/app1` correct value is 246 Hello, world! [root@bogon app1]#
© 著作权归作者所有
举报
发表评论
0/200