跳到主要内容

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() 直接拿到所有权