modはモジュールを使用することを宣言する。pubはモジュール外からもその名前にアクセスするために必要。
foo.rs
pub fn foo_func() {
println!("Foo!");
}
main.rs
mod foo;
fn main() {
foo::foo_func();
}
先ほどの例を記述すると
foo.rs
pub fn add(a: f32, b: f32) -> f32 {
a + b
}
pub fn subtract(a: f32, b: f32) -> f32 {
a - b
}
pub fn multiply(a: f32, b: f32) -> f32 {
a * b
}
pub fn divide(a: f32, b: f32) -> f32 {
a / b
}
main.rs
mod foo;
fn main() {
let a: f32 = 7.4;
let b: f32 = 99.0;
let x = foo::add(a, b);
println!("a + b = {}", x);
let y = foo::subtract(a, b);
println!("a - b = {}", y);
let z = foo::multiply(a, b);
println!("a * b = {}", z);
let d = foo::divide(a, b);
println!("a / d = {}", d);
}
$ cargo run
Compiling hoge v0.1.0 (/home/vagrant/dev/rust/hoge)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.97s
Running `target/debug/hoge`
a + b = 106.4
a – b = -91.6
a * b = 732.60004
a / d = 0.07474747
ヘッダーファイルが無い分、C++よりスッキリしてますね。。