#macro #simple #开发工具 #no-std

no-std shadow-clone

一个宏,用于将变量克隆到当前作用域,同时覆盖旧变量

7 个版本 (4 个稳定版)

1.2.1 2020年4月19日
1.2.0 2020年4月18日
0.1.1 2019年6月6日
0.0.1 2019年6月6日

1697Rust 模式

Download history 176/week @ 2024-04-14 203/week @ 2024-04-21 337/week @ 2024-04-28 358/week @ 2024-05-05 168/week @ 2024-05-12 178/week @ 2024-05-19 180/week @ 2024-05-26 376/week @ 2024-06-02 297/week @ 2024-06-09 476/week @ 2024-06-16 603/week @ 2024-06-23 402/week @ 2024-06-30 588/week @ 2024-07-07 297/week @ 2024-07-14 504/week @ 2024-07-21 586/week @ 2024-07-28

每月下载 1,975
用于 2 crates

MIT/Apache

6KB

Shadow Clone

一个宏,用于将变量克隆到当前作用域,同时覆盖旧变量。

pipeline status Latest version Latest Docs License downloads-badge

帮助

如果您在使用 shadow-clone 时遇到任何问题或需要帮助,请通过电子邮件发送到 [email protected]

如何使用

添加

shadow-clone = "1"

到您的 cargo.toml 中的 [dependencies] 部分,并在主文件中添加

use shadow_clone::shadow_clone;

示例

let s = "foo".to_string();
let c = move |x: i32| format!("{}{}", s, x);
let bar = s;

这将无法编译,因为 s 已经移动到闭包中。

这个问题可以通过这个宏来解决。

use shadow_clone::shadow_clone;
let s = "foo".to_string();
{
    shadow_clone!(s);
    let c = move |x: i32| format!("{}{}", s, x);
}
let bar = s;

它展开为:

use shadow_clone::shadow_clone;
let s = "foo".to_string();
{
    let s = s.clone();
    let c = move |x: i32| format!("{}{}", s, x);
}
let bar = s;

您也可以通过逗号分隔克隆多个变量: shadow_clone!(foo, bar);

您也可以通过前缀 mut 将克隆的变量绑定为可变: shadow_clone!(mut foo);

文档

API 文档

警告

如果您是从 GitHub 查看此内容,则这是一个只读副本。请在此处为 GitLab 复制 做出贡献

无运行时依赖