3 个版本
0.1.2 | 2023年2月18日 |
---|---|
0.1.1 | 2023年2月18日 |
0.1.0 | 2023年2月18日 |
972 在 Rust 模式
156 每月下载量
用于 wot_game_reader
19KB
109 行
merge-rs
merge
crate 提供了一个 Merge
trait,可以用于将多个值合并为一个
trait Merge {
fn merge(&mut self, other: Self);
}
Merge
可以用于结构体的派生
use merge::Merge;
#[derive(Merge)]
struct User {
// Fields with the skip attribute are skipped by Merge
#[merge(skip)]
pub name: &'static str,
// The strategy attribute is used to select the merge behavior
#[merge(strategy = merge::option::overwrite_none)]
pub location: Option<&'static str>,
#[merge(strategy = merge::vec::append)]
pub groups: Vec<&'static str>,
}
let defaults = User {
name: "",
location: Some("Internet"),
groups: vec!["rust"],
};
let mut ferris = User {
name: "Ferris",
location: None,
groups: vec!["mascot"],
};
ferris.merge(defaults);
assert_eq!("Ferris", ferris.name);
assert_eq!(Some("Internet"), ferris.location);
assert_eq!(vec!["mascot", "rust"], ferris.groups);
合并策略是一个具有以下签名的函数:fn merge<T>(left: &mut T, right: T)
,它将 right
合并到 left
。该 merge
crate 为最常见的类型提供了策略,但您也可以定义自己的策略。
该 trait 可以用于合并来自不同来源的配置,例如环境变量、多个配置文件和命令行参数,请参阅 args.rs
示例。
功能
此 crate 具有以下功能
derive
(默认):启用使用merge_derive
crate 的 derive 宏来为Merge
trait 提供支持。num
(默认):启用需要num_traits
crate 的num
模块中的合并策略。std
(默认):启用需要标准库的hashmap
和vec
模块中的合并策略。如果未设置此功能,则merge
是一个no_std
库。
最低支持的 Rust 版本
此 crate 支持 Rust 1.36.0 或更高版本。
联系方式
对于错误报告、补丁、功能请求和其他消息,请发送邮件至 ~ireas/[email protected] (存档)并在主题中使用前缀 [merge-rs]
。
您可以使用 git send-email
提交补丁,例如
git send-email --to=~ireas/[email protected] --subject-prefix="PATCH merge-rs"
请在主题前加上 PATCH merge-rs
以便自动运行CI。
许可证
本项目采用Apache-2.0和MIT许可证双授权。此存储库中包含的文档和配置文件采用Creative Commons Zero许可证。您可以在LICENSES
目录中找到许可证文本的副本。
merge-rs
符合REUSE规范3.0版本。
依赖项
~0–260KB