如何在Rust中导入深层目录中的模块?

问题描述 投票:0回答:1

我在

src/user/entity/user.rs
中有一个文件,其中包含以下代码:

pub struct User {
  name: String,
  email: String,
  age: i32,
  is_active: bool,
}

impl User {
  pub fn new(name: String, email: String, age: i32, is_active: bool) -> User {
    User {
      name,
      email,
      age,
      is_active
    }
  }

  pub fn get_name(&self) -> &str {
    &self.name
  }

  pub fn get_email(&self) -> &str {
    &self.email 
  }

  pub fn get_age(&self) -> i32 {
    self.age
  }

  pub fn is_active(&self) -> bool {
    self.is_active
  }

  pub fn set_name(&mut self, name: String) {
    self.name = name
  }

  pub fn set_email(&mut self, email: String) {
    self.email = email
  }

  pub fn set_age(&mut self, age: i32) {
    self.age = age
  }

  pub fn set_active(&mut self, is_active: bool) {
    self.is_active = is_active
  }
}

如何将其导入到

src/main.rs
文件中?

use user::entity::User;

fn main() {
  let mut _user = User::new("John".to_string(), "[email protected]".to_string(), 30, true);

  println!("User");
  println!("Name: {}", _user.get_name());
  println!("Email: {}", _user.get_email());
  println!("Age: {}", _user.get_age());
  println!("Active: {}", _user.is_active());

  _user.set_active(false);
  _user.set_name("Jane".to_string());
  _user.set_email("[email protected]".to_string());
  _user.set_age(43);

}

我还需要创建更多文件吗?我必须在cargo.toml 中添加一些内容吗?我看了官方文档还是不太明白。

rust rust-cargo
1个回答
1
投票

您需要为每个级别创建一个模块。

执行此操作的方法是放入

main.rs

pub mod user;

然后创建一个文件

src/user/mod.rs
src/user.rs
并放入其中:

pub mod entity;

然后创建一个文件

src/user/entity/mod.rs
src/user/entity.rs
并放入其中:

pub mod user;

然后将

use
顶部的
main.rs
声明更改为:

use user::entity::user::User;

那么你的代码应该可以工作。

快速而肮脏(而且不好)的方法是放入

main.rs

pub mod user {
    pub mod entity {
        pub mod user;
    }
}

并按照上面的方式更改

use
声明,就完成了。

© www.soinside.com 2019 - 2024. All rights reserved.