2个版本
使用旧的Rust 2015
0.0.2 | 2018年3月29日 |
---|---|
0.0.1 | 2018年3月29日 |
#16 在 #strings
13KB
214 行
Conform
Rust宏,用于就地转换结构体字符串字段。
受Go包conform
的启发。
ShakaCode
如果您需要帮助开发和优化您的项目,ShakaCode可以帮助您将应用的可靠性和性能提升到新的水平。
如果您是感兴趣于从事Rust / ReScript / TypeScript / Ruby on Rails项目开发的开发者,我们正在招聘!
安装
添加到 Cargo.toml
[dependencies]
conform = "x.x.x"
conform-derive = "x.x.x"
其中 x.x.x
是crate的当前版本。
用法
示例
extern crate conform;
#[macro_use]
extern crate conform_derive;
use conform::Conform;
#[derive(Conform, Debug)]
struct User {
#[conform(trim)]
name: String,
#[conform(trim, lower)]
email: Option<String>,
}
fn main() {
let mut user = User {
name: " Alex Fedoseev ".to_string(),
email: " [email protected]".to_string(),
};
user.conform();
println!("{:?}", user);
// Prints: User { name: "Alex Fedoseev", email: "[email protected]" }
}
conform
只在 String
或 Option<String>
类型的字段上工作。
let
绑定必须是可变的。
与验证器一起使用
您可以使用 conform
与 validator
一起使用
match user.conform().validate() {
Ok(_) => /* save `user` to DB */,
Err(err) => /* handle validation `err` */,
}
请参阅 完整示例。
转换
trim
删除前导和尾随空白。
" foo " -> "foo"
trim_left
删除前导空白。
" foo " -> "foo "
trim_right
删除尾随空白。
" foo " -> " foo"
lower
将任何大小写转换为小写,忽略分隔符。
"Foo-Bar" -> "foo-bar"
upper
将任何大小写转换为大写,忽略分隔符。
"Foo-Bar" -> "FOO-BAR"
sentence
将任何大小写转换为传统句式,不首字母大写。
"Foo Bar" -> "foo bar"
title
将任何大小写转换为标题大小写,其中每个单词都是首字母大写。
"foo bar" -> "Foo Bar"
camel
将任何大小写转换为camelCase。
"foo bar" -> "fooBar"
pascal
将任何大小写转换为PascalCase。
"foo bar" -> "FooBar"
kebab
将任何大小写转换为kebab-case。
"Foo Bar" -> "foo-bar"
train
将任何大小写转换为Train-Case。
"foo bar" -> "Foo-Bar"
snake
将任何大小写转换为snake_case。
"Foo Bar" -> "foo_bar"
constant
将任何大小写转换为CONSTANT_CASE。
"Foo Bar" -> "FOO_BAR"
许可证
MIT。
依赖项
~2MB
~47K SLoC