Skip to content

`unsafe` inline type erasure

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

Cyborus04/typeless

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

crates.io build status

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.

For a safer variant, check out inline_any

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 parameter C, 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.

About

`unsafe` inline type erasure

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages