trait Trait {
fn p(&self);
}
impl Trait for (u32) {
fn p(&self) { print!("1"); }
}
impl Trait for (i32,) {
fn p(&self) { print!("2"); }
}
impl Trait for (u32, u32) {
fn p(&self) { print!("3"); }
}
impl Trait for (i32, i32,) {
fn p(&self) { print!("4"); }
}
fn main() {
(0).p();
(0,).p();
(0, 0).p();
(0, 0,).p();
}
integer
為強制型別的數值會自動推導,匹配就近的數值。tuple
tuple
最後攜帶,
,標識tuple
身份。
常用於區分(0)
和(0,)
,第一個會計算為0
。
當()
計算語義強於tuple
語義時候作為區分,其他時候使用無影響。
(0)
這裡計算語義,並不會強制匹配(i32,)
,型別自動轉換為u32
。列印1
。(0,)
這裡標識tuple
語義,匹配(i32,)
,列印2
(0, 0)
不做指定,預設優先匹配i32
語義,解析為(i32, i32)
。列印4
(0,0,)
逗號只為宣告語義,匹配(i32, i32)
,列印4
。
同理(i32, i32, )
只作為語義宣告。
1244
本作品採用《CC 協議》,轉載必須註明作者和本文連結