型レベル整数ライブラリtypenumの紹介
Introduction to typenum
:dep typenum
//above line is magic for adding crate
use typenum::*;
type A = Sum<P1, P2>; // A is P3
assert_eq!(A::to_i32(), 3); // A::to_i32() == 3
以上の結果より,適切に型レベルで1+2
が計算出来たことがわかります. 次はもう少し複雑な例について考えます.以下に示すコードは,型レベル整数を用いて,((1 + 2 ) * 3 - 4) / 5
を計算します.ここで,Quot
は除算を,Diff
は減算を,Prod
は乗算を表します.
use typenum::*;
type A = Quot<Diff<Prod<Sum<P1, P2>, P3>, P4>, P5>; // A is P1
assert_eq!(A::to_i32(), 1); // A::to_i32() == 1
ここでは,最低限の演算しか紹介しませんでしたが,typenumにはこれら以外にも多くの機能が実装されています.興味のある方は,是非確認してみてください.