type语句声明可以以现有类型被用来给一个新的名字。类型必须有 CamelCase
名称, 或者编译器会提出警告。例外(异常)是原始类型: usize
,f32
, 等.
// `NanoSecond` is a new name for `u64`. |
type NanoSecond = u64; |
type Inch = u64; |
// Use an attribute to silence warning. |
#[allow(non_camel_case_types)] |
type u64_t = u64; |
// TODO ^ Try removing the attribute |
// Use an attribute to silence warnings |
#[allow(trivial_numeric_casts)] |
fn main() { |
// `NanoSecond` = `Inch` = `u64_t` = `u64`. |
let nanoseconds: NanoSecond = 5 as u64_t; |
let inches: Inch = 2 as u64_t; |
// Note that type aliases *don't* provide any extra type safety, because |
// aliases are *not* new types |
println!("{} nanoseconds + {} inches = {} unit?", |
nanoseconds, |
inches, |
nanoseconds + inches); |
} |