Expand description
Cell and Cell-like types that can store any type without dynamic memory.
Currently only the DungeonCore primitive is implemented (unsized, cell, stack vec, … are in progress).
§Example
use dungeon_cell::{DungeonCore, layout_for};
// a default DungeonCore can store any 'static type that fits in the layout
let mut core = DungeonCore::<layout_for!(String)>::default();
// we can store a i32 and get it back
core.store(1234);
assert_eq!(core.take(), Some(1234i32));
// we can store a f64 and get it back
core.store(1.234);
assert_eq!(core.take(), Some(1.234f64));
// lets get adventurous and store a String
core.store(String::from("hello world"));
assert_eq!(core.take(), Some(String::from("hello world")));
// we can't take a type the core isn't storing
core.store(1234);
assert_eq!(core.take(), None::<f32>);
// we can borrow both unique and shared
core.store(1234);
*core.borrow_mut::<i32>().unwrap() += 10;
assert_eq!(core.borrow(), Some(&1244i32));§Features
"alloc"- Enable support foralloctypes."std"- Enable support forstdtypes. Also enables"alloc"."unsize"- Enable use of the nightly featureunsize. Requires a nightly compiler."many_arg_fn"- Enable implementations for functions with 11-30 arguments.
§No-std Support
This crate is #![no_std] by default, it can be used anywhere Rust can.
§Minimum Supported Rust Version
Requires Rust 1.64.0.
This crate follows the “Latest stable Rust” policy. The listed MSRV won’t be changed unless needed. However, updating the MSRV anywhere up to the latest stable at time of release is allowed.
Modules§
- align
- Alignment forcing wrappers.
- bound
- Type encoded dynamic trait bounds.
- buffer
- Raw byte buffer to store other type’s values.
- compile_
time - Compile time utilities.
- layout
- Compile time layout description.
- lifetime_
type_ id TypeIdfor types with a lifetime.- marker_
traits - Markers for generic configuration types.
- vtable
- Virtual method tables.
Macros§
- give_
opaque_ static_ form - Wrap opaque typed value to implement
StaticForm. - has_
static_ form - Implement
StaticFormfor type. - layout_
for - Calculate the
Layoutneeded to store a set of types.
Structs§
- Dungeon
Core - Core of a dungeon type.
Traits§
- Cleanup
- Trait implemented on layouts that can be cleaned up be a vtable.
Type Aliases§
- Default
Vtable - The default vtable implementation.