#string-interning #intern #string #atom #interning

string-intern

另一个字符串重用的实现。独特特性:允许为每种重用值定义一个类型以及该类型的验证器。

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

Download history 17/week @ 2024-03-01 15/week @ 2024-03-08 16/week @ 2024-03-15 1/week @ 2024-03-22 33/week @ 2024-03-29 46/week @ 2024-04-05 13/week @ 2024-04-12 5/week @ 2024-04-19 3/week @ 2024-04-26 7/week @ 2024-05-10 6/week @ 2024-05-17 38/week @ 2024-05-24 109/week @ 2024-05-31 36/week @ 2024-06-07 21/week @ 2024-06-14

205 每月下载量
用于 2 crates

MIT/Apache

13KB
294 代码行

字符串重用库

状态测试版
文档http://docs.rs/string-intern/

为rust实现字符串重用的另一个版本。特性

  • 允许为每种重用值定义一个类型以及该类型的验证器。
  • 实现rustc_serialize::Encodable/Decodable
  • 实现serde支持

许可证

根据以下许可证之一授权

贡献

除非你明确表示,否则任何有意提交以包含在作品中的贡献,根据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