Skip to content

Commit

Permalink
modernized README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Robbepop committed Jul 9, 2017
1 parent 8086a8b commit c44709b
Showing 1 changed file with 58 additions and 12 deletions.
70 changes: 58 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,63 @@
[![Build Status](https://travis-ci.org/Robbepop/string-interner.svg?branch=master)](https://travis-ci.org/Robbepop/string-interner)
[![Build Status](https://ci.appveyor.com/api/projects/status/skcw9aylqqng1df0?svg=true)](https://ci.appveyor.com/project/Robbepop/string-interner/branch/master)
[![Coverage Status](https://coveralls.io/repos/github/Robbepop/string-interner/badge.svg?branch=master)](https://coveralls.io/github/Robbepop/string-interner?branch=master)
[![Crates.io Version](https://img.shields.io/crates/v/string-interner.svg)](https://crates.io/crates/string-interner)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
# String Interner

String-Interner
===============
| Linux | Windows | Coverage | Docs | Crates.io | Licence |
|:-------------------:|:-------------------:|:--------------------:|:---------------------:|:------------------:|:------------------:|
| [![travisCI][1]][2] | [![appveyor][3]][4] | [![coveralls][5]][6] | [![licence][11]][12 ] | [![chat][9]][10] | [![licence][7]][8] |

A string interning data structure that was designed for minimal memory-overhead
and fast access to the underlying interned string contents.
A string interning data structure that was designed for minimal memory overhead,
fast access to the underlying interned strings and cache-efficient iteration through its contents.

It uses a similar API as the string interner of the Rust compiler.
This implementation uses a similar API as the string interner of the Rust compiler.

Take a look into the [documentation](https://docs.rs/string-interner) to get to know how to use it!
### What is a string interner?

Link to [crates.io](https://crates.io/crates/string-interner).
String internment is an efficient bi-directional mapping between strings and very cheap identifiers (symbols)
that are used as representant for a certain string instead of the string itself.

### Internals

Internally a hashmap and a vector is used. The vector stored the true contents of interned strings
while the hashmap has internal references into the internal vector to avoid duplicates.

### Planned Features

- Safe abstraction wrapper that protects the user from the following misusage

- Using symbols of a different string interner instance to resolve string in another
- Using symbols that are already no longer valid (i.e. the associated string interner is no longer available)

- Even more flexibility for input into the string interner

## Changelog

- 0.6.0

- added optional serde serialization and deserialization support
- more efficient and generic `PartialEq` implementation for `StringInterner`
- made `StringInterner` generic over `BuildHasher` to allow for custom hashers

- 0.5.0

- added `IntoIterator` trait implementation for `StringInterner`
- greatly simplified iterator code

- 0.4.0

- removed restrictive constraint for `Unsigned` for `Symbol`

- 0.3.3

- added `Send` and `Sync` to `InternalStrRef` to make `StringInterner` itself `Send` and `Sync`

[1]: https://travis-ci.org/Robbepop/string-interner.svg?branch=master
[2]: https://travis-ci.org/Robbepop/string-interner
[3]: https://ci.appveyor.com/api/projects/status/16fc9l6rtroo4xqd?svg=true
[4]: https://ci.appveyor.com/project/Robbepop/string-interner/branch/master
[5]: https://coveralls.io/repos/github/Robbepop/string-interner/badge.svg?branch=master
[6]: https://coveralls.io/github/Robbepop/string-interner?branch=master
[7]: https://img.shields.io/badge/license-MIT-blue.svg
[8]: ./LICENCE
[9]: https://img.shields.io/crates/v/string-interner.svg
[10]: https://crates.io/crates/string-interner
[11]: https://docs.rs/string-interner/badge.svg
[12]: https://docs.rs/string-interner

0 comments on commit c44709b

Please sign in to comment.