#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 • Rust 包仓库 176/week @ 2024-04-14 • Rust 包仓库 203/week @ 2024-04-21 • Rust 包仓库 337/week @ 2024-04-28 • Rust 包仓库 358/week @ 2024-05-05 • Rust 包仓库 168/week @ 2024-05-12 • Rust 包仓库 178/week @ 2024-05-19 • Rust 包仓库 180/week @ 2024-05-26 • Rust 包仓库 376/week @ 2024-06-02 • Rust 包仓库 297/week @ 2024-06-09 • Rust 包仓库 476/week @ 2024-06-16 • Rust 包仓库 603/week @ 2024-06-23 • Rust 包仓库 402/week @ 2024-06-30 • Rust 包仓库 588/week @ 2024-07-07 • Rust 包仓库 297/week @ 2024-07-14 • Rust 包仓库 504/week @ 2024-07-21 • Rust 包仓库 586/week @ 2024-07-28 • Rust 包仓库

每月下载 1,975
用于 2 crates

MIT/Apache

6KB

Shadow Clone

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

pipeline status Latest version Latest Docs License downloads-badge

帮助

如果您在使用 shadow-clone 时遇到任何问题或需要帮助,请通过电子邮件发送到 incoming+efunb-shadow-clone-12722979-issue-@incoming.gitlab.com

如何使用

添加

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 复制 做出贡献

无运行时依赖