summaryrefslogtreecommitdiffstats
path: root/vendor/string_cache/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/string_cache/README.md')
-rw-r--r--vendor/string_cache/README.md78
1 files changed, 78 insertions, 0 deletions
diff --git a/vendor/string_cache/README.md b/vendor/string_cache/README.md
new file mode 100644
index 000000000..fdf4c0a35
--- /dev/null
+++ b/vendor/string_cache/README.md
@@ -0,0 +1,78 @@
+# string-cache
+
+[![Build Status](https://github.com/servo/string-cache/actions/workflows/ci.yml/badge.svg)](https://github.com/servo/string-cache/actions)
+
+[Documentation](https://docs.rs/string_cache/)
+
+A string interning library for Rust, developed as part of the [Servo](https://github.com/servo/servo) project.
+
+## Simple usage
+
+In `Cargo.toml`:
+
+```toml
+[dependencies]
+string_cache = "0.8"
+```
+
+In `lib.rs`:
+
+```rust
+extern crate string_cache;
+use string_cache::DefaultAtom as Atom;
+```
+
+## With static atoms
+
+In `Cargo.toml`:
+
+```toml
+[package]
+build = "build.rs"
+
+[dependencies]
+string_cache = "0.8"
+
+[build-dependencies]
+string_cache_codegen = "0.5"
+```
+
+In `build.rs`:
+
+```rust
+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`:
+
+```rust
+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:
+
+```rust
+fn compute_something(input: &foo::FooAtom) -> u32 {
+ match *input {
+ foo_atom!("foo") => 1,
+ foo_atom!("bar") => 2,
+ _ => 3,
+ }
+}
+```