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

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

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

我正在尝试学习 Rust,但我不明白为什么一种语言使得在深层目录中导入文件变得如此困难......这对于任何语言来说都应该是微不足道的事情,但我们开始了。

我在 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中放一些东西吗?

我已经阅读了官方文档 789464654654684 次,但我感觉就像一个尝试编程的孩子。

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;

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

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

main.rs

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

你就完成了。

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