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
'staticcode, with a non-'staticguard to ensure the references do not live past their lifetime. Elasticacts 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
Stretchedtrait for more info. There are very strict requirements on implementingStretched. If you blindly implementStretchedin a way which violates these requirements, you are going to be in instant undefined-behavior-land.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.