在上一篇文章中,我们实现了在 struct多字段中随意输入泛型的功能,但是并未实现计算圆面积的功能。
要想使用struct多字段进行各种算术运算,比如计算面积,也没那么容易。下面就参考如下代码吧。
use std::fmt::Display;
#[derive(Debug)]
struct Mypoint<X,Y>{
w:X,
h:Y
}
impl<X:Display+PartialOrd,Y:Display> Mypoint<X,Y>{
fn mycircle(self)->f64{
let x=format!("{}",self.w);
let y = format!("{}",self.h);
let w = match x.parse::<f64>() {
Ok(v) => v,
Err(e) => {
println!("宽度输入有错误…{}",e);
0.0
},
};
let h = match y.parse::<f64>() {
Ok(v) => v,
Err(e) => {
println!("高度输入有错误…{}",e);
0.0
},
};
w * h
}
}
fn main(){
let mp=Mypoint{w:6,h:5.0};
println!("{:?}",mp.mycircle());
let mp=Mypoint{w:6.0,h:"hello"};
println!("{:?}",mp.mycircle());
let mp=Mypoint{w:"9",h:"我偏不输入数字"};
println!("{:?}",mp.mycircle());
}
运行代码,输出如下结果。
30.0
高度输入有错误…invalid float literal
0.0
高度输入有错误…invalid float literal
0.0