2个版本
0.1.1 | 2023年2月20日 |
---|---|
0.1.0 | 2023年2月20日 |
#1309 in Rust模式
113 每月下载量
7KB
to_snake_case
此crate的主要用途是将camelCase和PascalCase格式转换为snake_case。这对于将trait
和struct
名称转换为用于生成模块和函数名称非常有用。
在rust中检测到的常见模式包括一些特质,如TryFrom
和TryInto
,它们的函数名分别是try_from
和try_into
。
此crate为所有AsRef<str>
实现了ToSnakeCase
特质,其中所有单词都转换为snake case。
(在此上下文中)一个单词将考虑为由空格分隔的字母组合。这意味着“ThrowItToMe”被认为是一个单词,但仍可以转换为适当的snake case“throw_it_to_me”。由空格分隔的单词不会用下划线 '_' 连接。
每次调用to_snake_case()
都提供包含转换后字符串的新分配字符串。
use to_snake_case::ToSnakeCase;
assert_eq!("to_snake_case", "ToSnakeCase".to_snake_case());
assert_eq!("to_snake_case", "toSnakeCase".to_snake_case());
assert_eq!("the_children_are_wrong - seymour skinner", "theChildrenAreWrong - Seymour Skinner".to_string().to_snake_case());
缩写词
to_snake_case
能够检测插入在单词之前、之间或之后的缩写词,并按预期进行转换(假设尾随单词首字母大写)。
use to_snake_case::ToSnakeCase;
assert_eq!("to_snake_case", "TOSnakeCASE".to_snake_case());
assert_eq!("to_snake_case", "ToSNAKECase".to_snake_case());
assert_eq!("canon_d", "CanonD".to_snake_case());
缩写词的限制
在多个缩写词连续在一起的情况下,无法正确地创建snake case。这是因为即使有字典,也无法逻辑上识别下一个单词的起始和结束位置。例如,字母"TOME"
- 应将其转换为"tome"
还是"to_me"
?缩写词也是上下文相关的,并不具有普遍性。
在to_snake_case
中,所有连续的大写字母将转换为不带下划线的小写,就像一个缩写词/单词一样,除非有前缀使其能够识别单词(例如小写字母)。
use to_snake_case::ToSnakeCase;
assert_eq!("tome", "TOME".to_snake_case());
构建依赖关系
#![feature(let_chains)]
。
许可证
版权所有 2023 Tony Nguyen
根据Apache License,版本2.0(“许可证”);除非根据适用法律或书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获得许可证副本:
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言,请参阅许可证,以了解管理许可和限制的具体语言。