trait
trait
use std::convert::TryInto;
fn main() {
let a: u8 = 10;
let b: u16 = 1500;
let b_: u8 = b.try_into().unwrap();
if a < b_ {
println!("Ten is less than one hundred.");
}
}
代码中引入了 std::convert::TryInto 特征,但是却没有使用它,可能有些同学会为此困惑,主要原因在于如果你要使用一个特征的方法,那么你需要引入该特征到当前的作用域中,我们在上面用到了 try_into 方法,因此需要引入对应的特征。但是 Rust 又提供了一个非常便利的办法,把最常用的标准库中的特征通过std::prelude模块提前引入到当前作用域中,其中包括了 std::convert::TryInto,
| 参数写法 | 能接收的类型 | 调用者需要做什么 | 函数内部处理 |
|---|---|---|---|
fn request(url: &str) | 仅 &str | 所有非 &str 类型都要手动转引用 | 需要再调用 to_string() 才能拿到所有权 |
fn request(url: String) | 仅 String | 所有非 String 类型都要手动调用 to_string() | 直接拿到所有权 |
fn request(url: impl Into<String>) | 所有能转成 String 的类型 | 什么都不用做,直接传 | 调用 into() 直接拿到所有权 |