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++よりスッキリしてますね。。