#expression #specifying #annotations #within #ascription

the-type

帮助在表达式内指定类型,即类型注解或类型注记。

1 个不稳定版本

0.9.0 2022年6月6日

#5 in #specifying

MIT 许可证

3KB

the-type

一个提供帮助在表达式内指定类型的函数的 crate。

动机

Haskell 允许对表达式进行类型注解

snoc (xs::[a])(x::a) = xs++[x] :: [a]

对于 Idris,相同的函数可以通过 'the' 函数实现

the : (ty : Type) -> ty -> ty
the ty x = x

还有一个类似的 RFC^1 和正在进行中的实现^2,Rust 中也存在。这个 crate 在库中提供了该函数。

使用

use the_type::the;
let foo: u8 = 0;

// typical method
let items1 : [usize; 4] = [foo.into(); 4];

// won't compile becuase Into is a generic trait but self.into() is not a generic method
// let items2 = [foo.into::<usize>(); 4];

// currently an experimental feature:
// let items3 = [foo.into(): usize; 4];

// an alternative way: 
let items4 = [usize::from(foo); 4];

// a more intuitive way:
let items5 = [the::<usize>(foo.into()); 4];

无运行时依赖