Crates.io | refmove |
lib.rs | refmove |
version | 0.1.3 |
source | src |
created_at | 2018-08-05 08:07:33.52821 |
updated_at | 2018-11-17 02:52:01.214509 |
description | An experimental implementation of library-level by-move references |
homepage | |
repository | https://github.com/qnighy/rust-refmove |
max_upload_size | |
id | 77596 |
size | 25,662 |
This crate contains an experimental implementation of library-level by-move references.
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.
#![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();
#![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();
}