菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
414
0

rust mod

原创
05/13 14:22
阅读数 96454

 

[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
414 点赞
0 评论
收藏
为你推荐 换一批