一、Rust调用同级目录中的rs文件
Rust新建工程demo02,src文件夹下面新建test.rs文件,这样main.rs文件与它属于同级目录中。
关键点:导入test文件和test文件中的Ellipse模块
rust
mod test;//导入test模块(文件)
use test::Ellipse;//使用test模块(文件)中的Ellipse模块
main.rs源文件
rust
mod test;//导入test模块(文件)
use test::Ellipse;//使用test模块(文件)中的Ellipse模块
fn main() {
let mut ell=Ellipse::new();
ell.set(10, 5);
println!("{:#?}", ell);
println!(
"椭圆的长半轴={},椭圆的短半轴={},椭圆的面积={}",
ell.get_x(),
ell.get_y(),
ell.area(),
);
}
test.rs源文件
rust
#[derive(Debug)]
//定义一个结构体
pub struct Ellipse {
max_semi_axis: u32,
min_semi_axis: u32,
}
impl Ellipse {
//创建Ellipse对象
pub fn new() -> Ellipse {
Ellipse {
max_semi_axis: 0,
min_semi_axis: 0,
}
}
//设置Ellipse其中元素值
pub fn set(&mut self, max_x: u32, min_y: u32){
self.max_semi_axis=max_x;
self.min_semi_axis=min_y;
}
//获取Ellipse长半轴值
pub fn get_x(&mut self) -> u32 {
self.max_semi_axis
}
//获取Ellipse短半轴值
pub fn get_y(&mut self) -> u32 {
self.min_semi_axis
}
//计算椭圆的面积
pub fn area(&mut self) -> f64 {
3.14 * self.max_semi_axis as f64 * self.min_semi_axis as f64
}
}
运行结果如下图所示:
二、Rust调用下级目录中的rs文件
Rust新建工程demo03,src文件夹下面新建shape目录,再在shape目录下新建ellipse.rs文件、rectangle.rs文件和mod.rs文件。
关键点:因为main.rs文件需要调用shape目录下的ellipse.rs文件、rectangle.rs文件,所以这是需要在shape目录下建立一个 mod.rs (Rust中的一个特殊文件) 用于模块的声明,就相当于声明shape这个目录下有哪些模块。
ellipse.rs源文件
rust
#[derive(Debug)]
//定义一个椭圆结构体
pub struct Ellipse {
max_semi_axis: u32,
min_semi_axis: u32,
}
impl Ellipse {
//创建Ellipse对象
pub fn new() -> Ellipse {
Ellipse {
max_semi_axis: 0,
min_semi_axis: 0,
}
}
//设置Ellipse其中元素值
pub fn set(&mut self, max_x: u32, min_y: u32){
self.max_semi_axis=max_x;
self.min_semi_axis=min_y;
}
//获取Ellipse长半轴值
pub fn get_x(&mut self) -> u32 {
self.max_semi_axis
}
//获取Ellipse短半轴值
pub fn get_y(&mut self) -> u32 {
self.min_semi_axis
}
//计算椭圆的面积
pub fn area(&mut self) -> f64 {
3.14 * self.max_semi_axis as f64 * self.min_semi_axis as f64
}
}
rectangle.rs源文件
rust
#[derive(Debug)]
//定义一个长方形结构体
pub struct Rectangle {
a: u32,
b: u32,
}
impl Rectangle {
//创建Rectangle对象
pub fn new() -> Rectangle {
Rectangle {
a: 0,
b: 0,
}
}
//设置Rectangle其中元素值
pub fn set(&mut self, a: u32, b: u32){
self.a=a;
self.b=b;
}
//获取Rectangle边长a
pub fn get_a(&mut self) -> u32 {
self.a
}
//获取Rectangle边长b
pub fn get_b(&mut self) -> u32 {
self.b
}
//计算长方形的面积
pub fn area(&mut self) -> u32 {
self.a * self.b
}
}
mod.rs源文件(声明shape这个目录下有哪些模块。)
rust
pub mod ellipse;
pub mod rectangle;
main.rs源文件
rust
mod shape;//导入shape文件夹
use shape::ellipse::Ellipse;//使用shape文件夹下的ellipse文件中的Ellipse模块
use shape::rectangle::Rectangle;//使用shape文件夹下的rectangle文件中的Rectangle模块
fn main() {
let mut ell=Ellipse::new();
ell.set(10, 5);
println!("{:#?}", ell);
println!(
"椭圆的长半轴={},椭圆的短半轴={},椭圆的面积={}",
ell.get_x(),
ell.get_y(),
ell.area(),
);
println!("-------------------------------------------------------");
let mut rect=Rectangle::new();
rect.set(8, 3);
println!("{:#?}", rect);
println!(
"长方形的边长a={},长方形的边长b={},长方形的面积={}",
rect.get_a(),
rect.get_b(),
rect.area(),
);
}
运行结果如下图所示: