{"id":16851890,"url":"https://github.com/cad97/simple-interner","last_synced_at":"2025-08-09T14:11:30.323Z","repository":{"id":44334464,"uuid":"128512952","full_name":"CAD97/simple-interner","owner":"CAD97","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-05T21:49:03.000Z","size":27,"stargazers_count":7,"open_issues_count":2,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-01T13:37:01.289Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CAD97.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-07T09:11:36.000Z","updated_at":"2024-02-25T05:06:10.000Z","dependencies_parsed_at":"2024-10-28T12:27:10.912Z","dependency_job_id":"91bf1994-b6cd-458f-9304-d48d80b09a0e","html_url":"https://github.com/CAD97/simple-interner","commit_stats":{"total_commits":30,"total_committers":2,"mean_commits":15.0,"dds":0.09999999999999998,"last_synced_commit":"24a836e9f8a0173faf48438d711442c2a86659c1"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CAD97%2Fsimple-interner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CAD97%2Fsimple-interner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CAD97%2Fsimple-interner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CAD97%2Fsimple-interner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CAD97","download_url":"https://codeload.github.com/CAD97/simple-interner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244189619,"owners_count":20412986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T13:34:00.199Z","updated_at":"2025-03-22T05:31:43.980Z","avatar_url":"https://github.com/CAD97.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# simple-interner\n\n\u003c!-- cargo-rdme start --\u003e\n\nA very simplistic interner based around giving out references rather than\nsome placeholder symbol. This means that you can mostly transparently add\ninterning into a system without requiring rewriting all of the code to work\non a new `Symbol` type, asking the interener to concretize the symbols.\n\nThe typical use case for something like this is text processing chunks,\nwhere chunks are very likely to be repeated. For example, when parsing\nsource code, identifiers are likely to come up multiple times. Rather than\nhave a `String` allocated for every occurrence of the identifier separately,\ninterners allow you to store `Symbol`. This additionally allows comparing\nsymbols to be much quicker than comparing the full interned string.\n\nThis crate exists to give the option of using the simplest interface. For\na more featureful interner, consider using a different crate, such as\n\n|             crate |    global   |  local | `'static` opt[^1] | `str`-only |  symbol size  | symbols deref |\n| ----------------: | :---------: | :----: | :---------------: | :--------: | :-----------: | :-----------: |\n|   simple-interner |  manual[^2] |   yes  |         no        |     no     |     `\u0026T`      |      yes      |\n|        [intaglio] |     no      |   yes  |         yes       |     yes    |     `u32`     |      no       |\n|      [internment] |    rc[^3]   |   yes  |         no        |     no     |     `\u0026T`      |      yes      |\n|           [lasso] |     no      |   yes  |         yes       |     yes    | `u8`–`usize`  |      no       |\n| [string-interner] |     no      |   yes  |     optionally    |     yes    | `u16`–`usize` |      no       |\n|    [string_cache] | static only | rc[^3] |     buildscript   |     yes    |     `u64`     |      yes      |\n|    [symbol_table] |     yes     |   yes  |         no        |     yes    |     `u32`     |  global only  |\n|            [ustr] |     yes     |   no   |         no        |     yes    |    `usize`    |      yes      |\n\n(PRs to this table are welcome!) \u003c!-- crate must have seen activity in the last year --\u003e\n\n[^1]: The interner stores `\u0026'static` references without copying the pointee\n    into the store, e.g. storing `Cow\u003c'static, str\u003e` instead of `Box\u003cstr\u003e`.\n\n[^2]: At the moment, creating the `Interner` inside a `static`, using\n    `Interner::with_hasher`, requires the `hashbrown` feature to be enabled.\n\n[^3]: Uses reference counting to collect globally unused symbols.\n\n[intaglio]: https://lib.rs/crates/intaglio\n[lasso]: https://lib.rs/crates/lasso\n[internment]: https://lib.rs/crates/internment\n[string-interner]: https://lib.rs/crates/string-interner\n[string_cache]: https://lib.rs/crates/string_cache\n[symbol_table]: https://lib.rs/crates/symbol_table\n[ustr]: https://lib.rs/crates/ustr\n\n\u003c!-- cargo-rdme end --\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcad97%2Fsimple-interner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcad97%2Fsimple-interner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcad97%2Fsimple-interner/lists"}