#own #closures #clone #utility #rust

ownage

执行大量所有权操作!无需宏即可将克隆的闭包传递到闭包/线程/未来

1 个不稳定版本

0.1.0 2023年4月10日

#100#own

MIT/Apache

6KB

ownage

执行大量所有权操作!

对于那些在传递到闭包/线程/未来之前手动克隆所有复杂的弧和框感到疲倦的人,但又反对在代码库中引入另一个通用宏。

own 函数试图在代码的舒适性和可读性之间提供黄金比例。

用法

use ownage::own;

let string = String::new();
let str_ref = string.as_str();
let vec = Vec::<bool>::new();
let slice = vec.as_slice();
let arc = std::sync::Arc::new(42u8);
let u = 42u8;

let answer = own((&string, str_ref, &vec, slice, &arc, &u), |s, s_ref, v, sl, arc, u| {
   std::thread::spawn(move || {
       // Do your dirty stuff here
       u
   })
   .join()
   .unwrap()
});

assert_eq!(answer, 42);

lib.rs:

执行大量所有权操作!

对于那些在传递到闭包/线程/未来之前手动克隆所有复杂的弧和框感到疲倦的人,但又反对在代码库中引入另一个通用宏。

own 函数试图在代码的舒适性和可读性之间提供黄金比例。

用法

use ownage::own;

let string = String::new();
let str_ref = string.as_str();
let vec = Vec::<bool>::new();
let slice = vec.as_slice();
let arc = std::sync::Arc::new(42u8);
let u = 42u8;

let answer = own((&string, str_ref, &vec, slice, &arc, &u), |s, s_ref, v, sl, arc, u| {
    std::thread::spawn(move || {
        // Do your dirty stuff here
        u
    })
    .join()
    .unwrap()
});

assert_eq!(answer, 42);

无运行时依赖