hv-elastic

Crates.iohv-elastic
lib.rshv-elastic
version0.4.1
sourcesrc
created_at2021-11-12 21:44:29.488119
updated_at2021-11-23 22:45:30.041057
descriptionSafe and almost-safe abstractions for lengthening lifetimes and `'static` "loaning" of non-`'static` types
homepage
repositoryhttps://github.com/sdleffler/hv-dev
max_upload_size
id481138
size51,335
Shea Leffler (sdleffler)

documentation

https://docs.rs/hv-elastic

README

Heavy Elastic - almost-safe lifetime stretching abstractions, for the adventurous or morbidly curious soul

Ever needed to access an &'a T from a closure which has to be 'static?

Know that you could "loan" that &'a T for just the times that that closre will run?

If so, then the Elastic type is for you! Please use responsibly. no-std compatible. Requires nightly for features generic_associated_types and allocator_api. Do not use during a new moon. During a blood moon or solar eclipse, refrigerate any machines which contain the source code for this crate and keep them under lock and key.

Features

  • "Loaning" immutable or mutable references into 'static code, with a non-'static guard to ensure the references do not live past their lifetime.
  • Elastic acts as a shared reference with refcell-like internals, providing easy interior mutability.
  • May eat your dog. Will not eat cats. It likes cats. So do I.
  • This crate is safe for very specific use cases; please see the documentaiton for the Stretched trait for more info. There are very strict requirements on implementing Stretched. If you blindly implement Stretched in a way which violates these requirements, you are going to be in instant undefined-behavior-land.

License

Licensed under either of

at your option.

Contribution

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.

Commit count: 187

cargo fmt