8个版本
使用旧的Rust 2015
0.1.7 | 2017年8月1日 |
---|---|
0.1.6 | 2017年7月13日 |
0.1.5 | 2017年5月31日 |
0.1.4 | 2016年12月27日 |
0.1.3 | 2016年11月21日 |
#26 in #intern
205 每月下载量
用于 2 crates
13KB
294 代码行
字符串重用库
状态 | 测试版 |
---|---|
文档 | http://docs.rs/string-intern/ |
为rust实现字符串重用的另一个版本。特性
- 允许为每种重用值定义一个类型以及该类型的验证器。
- 实现rustc_serialize::Encodable/Decodable
- 实现serde支持
许可证
根据以下许可证之一授权
- Apache许可证,版本2.0,(./LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(./LICENSE-MIT或http://opensource.org/licenses/MIT)任选其一。
贡献
除非你明确表示,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证的定义,应如上双重许可,不附加任何额外条款或条件。
lib.rs
:
Rust的字符串重用
示例
use string_intern::{Validator, Symbol};
struct UserIdSymbol;
// This symbol may contain anything
impl Validator for UserIdSymbol {
// Use an error from standard library to make example shorter
type Err = ::std::string::ParseError;
fn validate_symbol(val: &str) -> Result<(), Self::Err> {
Ok(())
}
}
/// Actual symbol type you will use in code
type UserId = Symbol<UserIdSymbol>;
// Create from const (panics on invalid input)
let x = UserId::from("user1");
// Create from user input
let y: UserId = format!("user{}", 1).parse().unwrap();
// Both point to the same bytes
assert!(x[..].as_bytes() as *const _ == y[..].as_bytes() as *const _);
依赖项
~345–590KB
~13K SLoC