| x 类型\至类型 | i32 | u32 | f64 | String |
| ------------- | ------------------ | ------------------ | ------------------ | ------------- |
| i32 | n/a | x as u32 | x as f64 | x.to_string() |
| u32 | x as u32 | n/a | x as f64 | x.to_string() |
| f64 | x as i32 | x as u32 | n/a | x.to_string() |
| String | x.parse().unwrap() | x.parse().unwrap() | x.parse().unwrap() | n/a |
- *可以看到 i32, u32, f64 到 String 类型是同一个函数,这样的话,如何来确定要转换至的具体类型?就是类型推导!当然,如果 rust
无法通过上下文推导出类型,就需要给出提示,例如 x.parse::().unwrap()。但是通常情况下,都不需要提示即可自动推导出类型。
| x 类型\至类型 | String | &str |
| ------------- | ------------- | ---- |
| String | n/a | &x |
| &str | x.to_string() | n/a |
| x 类型\至类型 | Vec<T> | &[T] | Box<[T]> |
| ------------- | ---------- | ------ | -------------------- |
| Vec<T> | n/a | &x[..] | x.into_boxed_slice() |
| &[T] | x.to_vec() | n/a | Box::new(\*x) |
| Box<[T]> | x.to_vec() | &x | n/a |