Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

servo/string-cache

Repository files navigation

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.9"

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.9"
[build-dependencies]
string_cache_codegen = "0.6"

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,
 }
}

About

String interning for Rust

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Contributors 62

Languages

AltStyle によって変換されたページ (->オリジナル) /