前提
Rustでsaturating_add
を使った場合のジェネリクスの書き方がわかりません。
実現したいこと
下記コードの、HogeU32
とHogeU64
をジェネリクスで一つにまとめたいです。
rust
1#[derive(Debug)] 2pub struct HogeU32 { 3 value: u32, 4} 5 6impl HogeU32 { 7 pub fn increase(self, value: u32) -> Self { 8 Self { 9 value: u32::saturating_add(self.value, value), 10 } 11 } 12} 13 14#[derive(Debug)] 15pub struct HogeU64 { 16 value: u64, 17} 18 19impl HogeU64 { 20 pub fn increase(self, value: u64) -> Self { 21 Self { 22 value: u64::saturating_add(self.value, value), 23 } 24 } 25} 26 27fn main() { 28 let mut hu32 = HogeU32{ 29 value: 100, 30 }; 31 32 hu32 = hu32.increase(100); 33 34 println!("{:?}", hu32); 35 36 let mut hu64 = HogeU64{ 37 value: 100, 38 }; 39 40 hu64 = hu64.increase(100); 41 42 println!("{:?}", hu64); 43}
発生している問題
型引数を用いたHoge<T>型の構造体を定義した場合、
rust
1value: u32::saturating_add(self.value, value) 2value: u64::saturating_add(self.value, value)
この部分の、型による振り分けをどう書けばいいのかわかりません。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/28 12:29