Crates.io | the-type |
lib.rs | the-type |
version | 0.9.0 |
source | src |
created_at | 2022-06-06 14:57:27.014341 |
updated_at | 2022-06-06 14:57:27.014341 |
description | helps specifying type within the expression, i.e. type annotation or type ascription. |
homepage | |
repository | https://github.com/zStruCat/the-type |
max_upload_size | |
id | 600778 |
size | 4,343 |
A crate providing function which helps specifying type within the expression.
Haskell allows type annotation for expression:
snoc (xs::[a])(x::a) = xs++[x] :: [a]
For Idris, the same function can be achieved by 'the' function
the : (ty : Type) -> ty -> ty
the ty x = x
There're also a RFC1 and ongoing implementation2 similar to the forementioned in Rust. This crate provide the function in library.
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];