#string-interning #servo #cargo-toml #cache #string-cache #lib #string-cache-codegen

string_cache_shared

Code share between string_cache and string_cache_codegen

13 releases

Uses old Rust 2015

0.3.0 Nov 2, 2016
0.1.12 Nov 13, 2015
0.1.9 Oct 26, 2015
0.1.7 Sep 13, 2015
0.1.0 Apr 29, 2015

#155 in Caching

Download history 2466/week @ 2023-11-20 2809/week @ 2023-11-27 2042/week @ 2023-12-04 1666/week @ 2023-12-11 1649/week @ 2023-12-18 1426/week @ 2023-12-25 1503/week @ 2024-01-01 2096/week @ 2024-01-08 1716/week @ 2024-01-15 1861/week @ 2024-01-22 2164/week @ 2024-01-29 2194/week @ 2024-02-05 1718/week @ 2024-02-12 1933/week @ 2024-02-19 2669/week @ 2024-02-26 2575/week @ 2024-03-04

9,131 downloads per month
Used in 237 crates (via string_cache_plugin)

MIT/Apache

2KB

string-cache

Build Status

Documentation

A string interning library for Rust, developed as part of the Servo project.

Simple usage

In Cargo.toml:

[dependencies]
string_cache = "0.8"

In lib.rs:

extern crate string_cache;
use string_cache::DefaultAtom as Atom;

With static atoms

In Cargo.toml:

[package]
build = "build.rs"

[dependencies]
string_cache = "0.8"

[build-dependencies]
string_cache_codegen = "0.5"

In build.rs:

extern crate string_cache_codegen;

use std::env;
use std::path::Path;

fn main() {
    string_cache_codegen::AtomType::new("foo::FooAtom", "foo_atom!")
        .atoms(&["foo", "bar"])
        .write_to_file(&Path::new(&env::var("OUT_DIR").unwrap()).join("foo_atom.rs"))
        .unwrap()
}

In lib.rs:

extern crate string_cache;

mod foo {
    include!(concat!(env!("OUT_DIR"), "/foo_atom.rs"));
}

The generated code will define a FooAtom type and a foo_atom! macro. The macro can be used in expression or patterns, with strings listed in build.rs. For example:

fn compute_something(input: &foo::FooAtom) -> u32 {
    match *input {
        foo_atom!("foo") => 1,
        foo_atom!("bar") => 2,
        _ => 3,
    }
}

No runtime deps