Crate refmove[−][src]
This crate contains an experimental implementation of library-level by-move references.
When #50173 and #53033 land in the compiler,
it will enable you to use self: RefMove<Self>
to pass your trait
object by value, even without allocation.
See #48055 for another approach to allow by-value trait objects.
Usage
Borrowing
#![feature(nll)] extern crate refmove; use refmove::{Anchor, AnchorExt, RefMove}; // Borrowing from stack let _: RefMove<i32> = 42.anchor().borrow_move(); // Borrowing from box let _: RefMove<i32> = Box::new(42).anchor_box().borrow_move();
Extracting
#![feature(nll)] extern crate refmove; use refmove::{Anchor, AnchorExt, RefMove}; fn f(x: RefMove<String>) { // Borrowing by dereference println!("{}", &x as &String); // Move out ownership let _: String = x.into_inner(); }
Re-exports
pub use anchor::Anchor; |
Modules
anchor |
Anchors |
Structs
RefMove |
Owned reference. |
Traits
AnchorExt |
Provides |
BorrowInterior |
Anchored by-move borrowing. |
BorrowMove |
Unanchored by-move reborrowing. |