(new type idiom https://doc.rust-lang.org/rust-by-example/generics/new_types.html - недостаточно удобно).
Motivation - чтобы не писать обобщённый код (а мне местные гуру сказали что не надо), но иметь возьмжность в дальнейшем поменять тип (с условного u32 на u64) - сделать условный "newtype MyNubmer = u32".
А чем идиома newtype не подходит?
Type alias - не то, что хочется? pub type MyNumber = u64;
Замечу, что с тайпалиасами есть неудобство: они слишком рано подставляются при компиляции. Например, можно случайно поставить не тот тип в функцию и даже ворнинга не будет: type One = u32; type Two = u32; fn foo(one: One) {dbg!(one);} fn main() { let a: Two = 1; foo(a); }
ньютайп и тайпдеф это разные по семантике вещи
Обсуждают сегодня