Rustで複数のTraitをまとめる
March 25, 2019
数値型で汎用に使えるような、 条件分岐や四則演算を含むジェネリクス関数を定義する場合、
fn caluculate<T: Copy + Clone + Eq + Ord + PartialEq + PartialOrd + Add + Sub + Mul + Div>(n: T) -> T {
// code
}これを毎回書くのはしんどいので、
fn caluculate<T: PrimitiveNum>(n: T) -> T {
// code
}としたい。
今日Rustをはじめたので最適解かどうかはわからないけど
trait PrimitiveNum: Copy + Clone + Eq + Ord + PartialEq + PartialOrd + Add + Sub + Mul + Div {}
impl<T: Copy + Clone + Eq + Ord + PartialEq + PartialOrd + Add + Sub + Mul + Div> PrimitiveNum for T {}こうすればよい。みたい。
(Traitは適宜取捨選択して頂いて。)
Written by rnitta who lives and works in Tokyo building nothing.
You can follow him on Twitter