4 个版本
0.1.3 | 2021 年 7 月 15 日 |
---|---|
0.1.2 | 2021 年 7 月 14 日 |
0.1.1 | 2021 年 2 月 18 日 |
0.1.0 | 2020 年 10 月 12 日 |
#16 in #string-representation
45,393 每月下载量
在 14 个 crate 中使用 (通过 tinystr-macros)
7KB
145 行
tinystr
tinystr
是一种小型只包含 ASCII 字符的定长字符串表示。
用法
use tinystr::{TinyStr4, TinyStr8, TinyStr16, TinyStrAuto};
fn main() {
let s1: TinyStr4 = "tEsT".parse()
.expect("Failed to parse.");
assert_eq!(s1, "tEsT");
assert_eq!(s1.to_ascii_uppercase(), "TEST");
assert_eq!(s1.to_ascii_lowercase(), "test");
assert_eq!(s1.to_ascii_titlecase(), "Test");
assert_eq!(s1.is_ascii_alphanumeric(), true);
let s2: TinyStr8 = "New York".parse()
.expect("Failed to parse.");
assert_eq!(s2, "New York");
assert_eq!(s2.to_ascii_uppercase(), "NEW YORK");
assert_eq!(s2.to_ascii_lowercase(), "new york");
assert_eq!(s2.to_ascii_titlecase(), "New york");
assert_eq!(s2.is_ascii_alphanumeric(), false);
let s3: TinyStr16 = "metaMoRphosis123".parse()
.expect("Failed to parse.");
assert_eq!(s3, "metaMoRphosis123");
assert_eq!(s3.to_ascii_uppercase(), "METAMORPHOSIS123");
assert_eq!(s3.to_ascii_lowercase(), "metamorphosis123");
assert_eq!(s3.to_ascii_titlecase(), "Metamorphosis123");
assert_eq!(s3.is_ascii_alphanumeric(), true);
let s4: TinyStrAuto = "shortNoAlloc".parse().unwrap();
assert!(matches!(s4, TinyStrAuto::Tiny { .. }));
assert_eq!(s4, "shortNoAlloc");
let s5: TinyStrAuto = "longFallbackToHeap".parse().unwrap();
assert!(matches!(s4, TinyStrAuto::Heap { .. }));
assert_eq!(s4, "shortNoAlloc");
}
详细信息
该 crate 提供了三个结构和一个枚举
TinyStr4
限制为 4 个字符的 ASCII 只字符串。TinyStr8
限制为 8 个字符的 ASCII 只字符串。TinyStr16
限制为 16 个字符的 ASCII 只字符串。TinyStrAuto
(枚举)Tiny
当字符串长度为 16 个字符或更短时。Heap
当字符串长度为 17 个字符或更长时。
这些结构使用 u32
/u64
/u128
存储字符,并使用位掩码提供基本的字符串操作
- is_ascii_numeric
- is_ascii_alphabetic
- is_ascii_alphanumeric
- to_ascii_lowercase
- to_ascii_uppercase
- to_ascii_titlecase
- PartialEq
TinyStrAuto
在字符串足够短时将其存储为 TinyStr16,否则回退到标准的 String
。当您预期大多数字符串长度为 16 个字符或更短,但偶尔会收到超出该长度的字符串时,应使用 TinyStrAuto。与结构不同,TinyStrAuto
不实现 Copy
。
此集合足以满足某些类别的用途,例如 unic-langid
库。
no_std
禁用此crate中的std
特性,使其变为#[no_std]
模式。这样做会禁用TinyStrAuto
。您可以通过启用alloc
特性在#[no_std]
模式下重新启用TinyStrAuto
。
性能
对于这些用途,TinyStr提供的性能特性比常规的String
要好得多。
状态
该crate功能齐全,可用于生产环境。其功能可以扩展。
许可证
根据您的要求,许可协议为Apache许可证版本2.0或MIT许可证。
lib.rs
:
tinystr-raw
导出将字节字符串转换为原始TinyStr数据的函数。
不建议公开使用;请使用tinystr
代替。