#string #api #fields #transform #place #struct #macro

conform

宏:原地转换结构体字符串字段

2 个版本

使用旧的 Rust 2015

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

#2471Rust 模式

36 每月下载量
conform-derive 中使用

MIT 许可证

5KB
50

Conform

crates.io version build status license

Rust 宏:原地转换结构体字符串字段。

conform 包(Go 语言)启发。

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。

依赖项

~28KB