< 返回版块

Mike Tang 发表于 2018-01-10 15:26

Tags:rust,mod

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$ 

评论区

写评论
Jonir Rings 2018-01-10 15:50

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

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"
Jonir Rings 2018-01-10 15:34

贴一下我这边遇到的问题,也就是这个帖子的原因。 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"

作者 Mike Tang 2018-01-10 15:31

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

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

作者 Mike Tang 2018-01-10 15:28

装逼。演示用。

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

腹黑猫 2018-01-10 15:28

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

1 共 5 条评论, 1 页