Conversion
Rust的核心就是traits
,可以重载。
From and To
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
use std::convert::From;
#[derive(Debug)]
struct Number {
value: i32,
}
impl From<i32> for Number {
fn from(item: i32) -> Self {
Number { value: item }
}
}
fn main() {
let num = Number::from(123);
println!("{:#?}", num);
let x = 5;
let num: Number = x.into();
println!("{:#?}", num);
}
|
实现了From
这个traits,就能够同时使用from以及into,用来从类型之间的转换。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
use std::fmt;
struct Circle {
radius: i32
}
impl fmt::Display for Circle {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Circle of radius {}", self.radius)
}
}
fn main() {
let circle = Circle { radius: 6 };
println!("{}", circle.to_string());
}
|
从String转变
1
2
3
4
5
6
7
|
fn main() {
let parsed: i32 = "5".parse().unwrap();
let turbo_parsed = "10".parse::<i32>().unwrap();
let sum = parsed + turbo_parsed;
println!("Sum: {:?}", sum);
}
|
unwrap()
方法就是如果能够转换,就为真实的值,如果不能就报错。
参考