#reference #ownership #experimental #traits #object #by-move #library-level

nightly no-std refmove

库级别 by-move 引用的实验性实现

4 个版本

使用旧的 Rust 2015

0.1.3 2018年11月17日
0.1.2 2018年8月17日
0.1.1 2018年8月14日
0.1.0 2018年8月5日

#2789Rust 模式

MIT/Apache

26KB
572

refmove:库级别 by-move 引用的实验性实现

Build Status Latest Version

此包包含库级别 by-move 引用的实验性实现。

它将允许您使用 self: RefMove<Self> 来按值传递您的 trait 对象,甚至无需分配。

有关允许按值传递 trait 对象的另一种方法的更多信息,请参阅 #48055

用法

借用

#![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();
}

无运行时依赖

功能