1 unstable release
0.1.0 | Oct 5, 2021 |
---|
#5 in #type-erased
Used in inline_any
9KB
84 lines
typeless
unsafe
API for type erasure on the stack
Usage
Add the following to your Cargo.toml
[dependencies]
typeless = "0.1"
Storing any value x
of type T
in TypeErased
completely destroys all type data associated
with it.
Restrictions
While this erases all type data, leaving only the pure bytes, the compiler still requires 2 things:
-
Size: The size of a
TypeErased
is not based on the data it contains, but rather a const generic parameterC
, effectively a "maximum size" on the types it can contain. -
Alignment: Until there is a way to define alignment by a const parameter, the alignment of
TypeErased
is 8 bytes, so anything with an alignment of 8 or less can be contained
Access
Since there is no type data anymore, any access to the inner data is unsafe
(except getting the bytes directly)
TypeErased
is not Send
nor Sync
since it can't be known if that's safe
License
This project is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.