< 返回版块

关于rust的模块儿引用的一个实例

Mike Tang 发表于

标签:rust,mod 浏览:57 评论:4

mike@spirit:~/test/tmod/src$ ls
b.rs  main.rs
mike@spirit:~/test/tmod/src$ cat main.rs 

mod A {
    pub fn a_func() {
        println!("I am a_func.")
    }
}

mod b;

fn main() {

    A::a_func();
    b::b_func();
}

mike@spirit:~/test/tmod/src$ cat b.rs 

use super::A;

pub fn b_func() {
    println!("I am b_func");
    A::a_func();
}

mike@spirit:~/test/tmod/src$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `/home/mike/test/tmod/target/debug/tmod`
I am a_func.
I am b_func
I am a_func.
mike@spirit:~/test/tmod/src$ 

评论区

腹黑猫 2018-01-10T07:28:02.819954

为啥人类要在main.rs里写mod呢?

作者 Mike Tang 2018-01-10T07:28:51.128801

装逼。演示用。

@腹黑猫 为啥人类要在main.rs里写mod呢?

作者 Mike Tang 2018-01-10T07:31:25.126093

同级的a.rs不能引用同级目录下的b.rs。

只能是同级的crate入口 文件才能引用其它文件。

Jonir Rings 2018-01-10T07:50:24.749181

贴一下我这边遇到的问题,也就是这个帖子的原因。

main.rs

mod A;

fn main() {
    println!("Hello, this is main");
    A::printA();
}

A.rs

mod B;

pub fn printA(){
    println!("hello, this is A");
    B::printB();
}

B.rs

pub fn printB(){
    println!("hello, this is B");
}

编译报错,

error: src\A.rs:1: file not found for module B help: src\A.rs:1: name the file either A\B.rs or A\B\mod.rs inside the directory "src"
1 共 4 评论, 共 1 页