1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
# tinystr [](https://crates.io/crates/tinystr) [](https://travis-ci.org/zbraniecki/tinystr) [](https://coveralls.io/github/zbraniecki/tinystr?branch=master)
`tinystr` is a small ASCII-only bounded length string representation.
Usage
-----
```rust
use tinystr::{TinyStr4, TinyStr8, TinyStr16};
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);
}
```
Details
-------
The crateh provides three structs:
* `TinyStr4` an ASCII-only string limited to 4 characters.
* `TinyStr8` an ASCII-only string limited to 8 characters.
* `TinyStr16` an ASCII-only string limited to 16 characters.
It stores them as `u32`/`u64`/`u128` and uses bitmasking to provide basic string manipulation operations:
* is_ascii_numeric
* is_ascii_alphabetic
* is_ascii_alphanumeric
* to_ascii_lowercase
* to_ascii_uppercase
* to_ascii_titlecase
* PartialEq
This set is sufficient for certain classes of uses such as `unic-langid` libraries.
Performance
-----------
For those uses, TinyStr provides [performance characteristics](https://github.com/zbraniecki/tinystr/wiki/Performance) much better than the regular `String`.
Status
------
The crate is fully functional and ready to be used in production.
The capabilities can be extended.
#### License
<sup>
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
</sup>
<br>
<sub>
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in Serde by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.
</sub>
|