複数の列挙型を同じ値にする最良の方法は何ですか?これは、私が望むものの一例ですが、Rustはそれが好きではないことを除いては。同じ値を持つ複数の列挙型?
pub enum Nums {
Num1 = 0,
Num2 = 1,
Num3 = 2,
Num4 = 3,
Num5 = 4,
FirstNum = 0,
MiddleNum = 2,
LastNum = 4,
}
複数の列挙型を同じ値にする最良の方法は何ですか?これは、私が望むものの一例ですが、Rustはそれが好きではないことを除いては。同じ値を持つ複数の列挙型?
pub enum Nums {
Num1 = 0,
Num2 = 1,
Num3 = 2,
Num4 = 3,
Num5 = 4,
FirstNum = 0,
MiddleNum = 2,
LastNum = 4,
}
定数を使用する必要があります。 enum
バリアントは、が他のバリアントと同じタグ値を持つことができません。あなたが毎晩コンパイラを使用してもかまわない場合
pub enum Nums {
Num1 = 0,
Num2 = 1,
Num3 = 2,
Num4 = 3,
Num5 = 4,
}
pub const FirstNum: Nums = Nums::Num1;
pub const MiddleNum: Nums = Nums::Num3;
pub const LastNum: Nums = Nums::Num5;
は、rootモジュールに #![feature(associated_consts)]
を追加すると、関連する定数を使用することができます。 これはあなたがまたenum
にメソッドを追加することができNums::FirstNum
、など
impl Nums {
pub const FirstNum: Nums = Nums::Num1;
pub const MiddleNum: Nums = Nums::Num3;
pub const LastNum: Nums = Nums::Num5;
}
を使用することができます:定数を関連する
pub enum Nums {
Num1 = 0,
Num2 = 1,
Num3 = 2,
Num4 = 3,
Num5 = 4,
}
impl Nums {
pub fn first() -> Self { Nums::Num1 }
pub fn middle() -> Self { Nums::Num3 }
pub fn last() -> Self { Nums::Num5 }
}
fn main() {
println!("{}", Nums::first() as u8);
}
ああ、それらは私がしたい正確に何です。そんなことはできないと思った。私はenumを持つことを考えていたし、すべてのenum値と定数をmodブロックの中に入れたとして複写を再定義しました。 – graeme