В раст хотят завезти какое-то подобие refinement types
Если получится, тогда сможем выражать:
1. Интегральные типы в определенном ренже (i32 с возможными значениями в 0..=10)
2. Enum variants as a type
3. Хз, придумайте сами, это реально мощно
Например:
Или
Еще, это позволит расширять нишу, которая может быть заполнена дискриминантом. Кароче, одни плюсы (почти).
#rust #prog
Если получится, тогда сможем выражать:
1. Интегральные типы в определенном ренже (i32 с возможными значениями в 0..=10)
2. Enum variants as a type
3. Хз, придумайте сами, это реально мощно
Например:
// ok
let a: pattern_type!(i32 is 0..=10) = 10;
// fail
let a: pattern_type!(i32 is 0..10) = 10; // notice lack of =
Или
// ok
let a: pattern_type!(Option<i32> is Some(..)) = Some(10);
// fail
let a: pattern_type!(Option<i32> is Some(..)) = None;
Еще, это позволит расширять нишу, которая может быть заполнена дискриминантом. Кароче, одни плюсы (почти).
#rust #prog
🍌3👍1🦄1
Мы живем во времена, когда короче ниче не понятно... Забыл че хотел сказать, извините.
🍌5🤔2🖕2🤮1🦄1