#string #api #macro-derive

macro conform-derive

#[derive(Conform)] 宏的1.1实现

2个版本

使用旧的Rust 2015

0.0.2 2018年3月29日
0.0.1 2018年3月29日

#16#strings

MIT 许可证

13KB
214

Conform

crates.io version build status license

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 只在 StringOption<String> 类型的字段上工作。

let 绑定必须是可变的。

与验证器一起使用

您可以使用 conformvalidator 一起使用

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