ref-portals
Safely use (stack) references outside their original scope.
This library provides convenient runtime-checked out-of-scope handles that are:
!Send + !Sync
or (dependently)Send
/Sync
,- immutable or mutable and
- target
Sync
or!Sync
values.
Please see the documentation for more information about which to choose.
Example
use Anchor;
let x = "Scoped".to_owned;
let anchor = new;
let self_owned: = Box new;
self_owned; // Scoped
Note that dropping anchor
before self_owned
would still cause a panic here.
You can use weak portals to work around this:
use Anchor;
let x = "Scoped".to_owned;
let anchor = new;
let eternal: &'static dyn Fn = Box leak;
eternal; // Scoped
Versioning
ref-portals
strictly follows Semantic Versioning 2.0.0 with the following exceptions:
- The minor version will not reset to 0 on major version changes.
Consider it the global feature level. - The patch version will not reset to 0 on major or minor version changes.
Consider it the global patch level.