[−][src]Function tao_of_rust::ch03::type_infer::infer_demo
pub fn infer_demo()
类型推导
Base usage: 正常推导
fn sum(a: u32, b: i32) -> u32 { a + (b as u32) } fn infer_demo() { let a = 1; let b = 2; assert_eq!(sum(a, b), 3); // a和b的类型会自动推断为i32 let elem = 5u8; let mut vec = Vec::new(); vec.push(elem); // vec 类型会自动推断为 u8 assert_eq!(vec, [5]); } infer_demo();Run
Base usage: 无法推导的情况
let x = "1"; println!("{:?}", x.parse().unwrap());Run
Base usage: 解决无法推导的情况
let x = "1"; println!("{:?}", x.parse::<i32>().unwrap());Run
Base usage: 另一种类型无法推导的情况
let a = 0; let a_pos = a.is_positive(); // error`[E0599]`: no method named `is_positive` found for type `{integer}` in the current scopeRun