此问题已在此处有答案:
How do I import from a sibling module?(2个答案)
4年前关闭。
我在src
目录下有一个文件 Projectile.rs。它目前由 main.rs 使用。但是,我需要在 Projectile. rs 中使用共享同一目录的文件 Freefall. rs。以下是目前的情况:
目录
src
|___main.rs
|___Projectile.rs
|___FreeFall.rs
*主.RS
mod Projectile;
fn main() {
println!("Goed... momenteel");
Projectile::projectile(10.0, 5.0, 100.0, 7.5);
}
PROJECTILE.RS
use std;
mod FreeFall;
pub fn projectile(init: f64, AngleX: f64, AngleY: f64, AngleZ: f64) {
let mut FFAccel = FreeFall::acceleration();
struct Velocities {
x: f64,
y: f64,
z: f64,
t: f64,
};
let mut Object1 = Velocities {
x: init * AngleX.sin(),
y: init * AngleY.cos(),
z: init * AngleZ.tan(),
t: (2.0 * init.powf(-1.0) * AngleY.sin()) / FFAccel,
};
println!("{}", Object1.t);
}
自由落体酒店,RS
use std;
pub fn acceleration() {
// maths here
}
我不能只使用9.81(这是地球上的平均重力),因为它没有考虑空气阻力,终端速度等。
我尝试将FreeFall
模块包含到 * main.rs * 中,但是没有成功。
1条答案
按热度按时间wrrgggsh1#
在Rust中,单文件模块不能使用
mod
关键字从其他文件声明其他模块。为此,您需要为模块创建一个目录,将模块根文件命名为mod.rs
,并在其中为每个嵌套模块创建一个单独的文件(或目录)。根据经验,您应该在目录的“根文件”(通常是
main.rs
、lib.rs
或mod.rs
)中声明每个模块,并在其他任何地方声明use
。方便的是,您可以使用crate::
作为crate的根模块,并使用它引用您的模块。举例来说:
main.rs
foo.rs
baz/mod.rs
进一步阅读的一些资源: