{"id":13822553,"url":"https://github.com/RoaringBitmap/croaring-rs","last_synced_at":"2025-05-16T17:31:03.846Z","repository":{"id":39579805,"uuid":"66066769","full_name":"RoaringBitmap/croaring-rs","owner":"RoaringBitmap","description":"Rust FFI wrapper for CRoaring","archived":false,"fork":false,"pushed_at":"2025-04-01T21:34:59.000Z","size":896,"stargazers_count":158,"open_issues_count":2,"forks_count":44,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-06T20:17:40.564Z","etag":null,"topics":["bitset","bitset-library","croaring","roaring-bitmaps","rust","wrapper"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RoaringBitmap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2016-08-19T08:33:51.000Z","updated_at":"2025-05-03T02:52:04.000Z","dependencies_parsed_at":"2024-01-26T21:45:05.545Z","dependency_job_id":"1c61d8a4-c8e2-41a7-bc6e-8429775d0fc1","html_url":"https://github.com/RoaringBitmap/croaring-rs","commit_stats":null,"previous_names":["saulius/croaring-rs"],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaringBitmap%2Fcroaring-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaringBitmap%2Fcroaring-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaringBitmap%2Fcroaring-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaringBitmap%2Fcroaring-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoaringBitmap","download_url":"https://codeload.github.com/RoaringBitmap/croaring-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252761258,"owners_count":21800128,"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":["bitset","bitset-library","croaring","roaring-bitmaps","rust","wrapper"],"created_at":"2024-08-04T08:02:05.791Z","updated_at":"2025-05-16T17:31:03.835Z","avatar_url":"https://github.com/RoaringBitmap.png","language":"C","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# croaring-rs [![https://travis-ci.org/RoaringBitmap/croaring-rs](https://travis-ci.org/RoaringBitmap/croaring-rs.svg?branch=master)](https://travis-ci.org/RoaringBitmap/croaring-rs)\nA [Rust](https://www.rust-lang.org) wrapper for CRoaring (a C/C++ implementation at https://github.com/RoaringBitmap/CRoaring)\n\nThe original java version can be found at https://github.com/RoaringBitmap/RoaringBitmap\n\n### Bitmap usage example\n\n```rust\nuse croaring::Bitmap;\n\nlet mut rb1 = Bitmap::new();\nrb1.add(1);\nrb1.add(2);\nrb1.add(3);\nrb1.add(4);\nrb1.add(5);\nrb1.add(100);\nrb1.add(1000);\nrb1.run_optimize();\n\nlet mut rb2 = Bitmap::new();\nrb2.add(3);\nrb2.add(4);\nrb2.add(1000);\nrb2.run_optimize();\n\nlet mut rb3 = Bitmap::new();\n\nassert_eq!(rb1.cardinality(), 7);\nassert!(rb1.contains(3));\n\nrb1.and_inplace(\u0026rb2);\nrb3.add(5);\nrb3.or_inplace(\u0026rb1);\n\nlet mut rb4 = Bitmap::fast_or(\u0026[\u0026rb1, \u0026rb2, \u0026rb3]);\n\nrb1.and_inplace(\u0026rb2);\nprintln!(\"{:?}\", rb1);\n\nrb3.add(5);\nrb3.or_inplace(\u0026rb1);\n\nprintln!(\"{:?}\", rb1);\n\nrb3.add(5);\nrb3.or_inplace(\u0026rb1);\n\nprintln!(\"{:?}\", rb3.to_vec());\nprintln!(\"{:?}\", rb3);\nprintln!(\"{:?}\", rb4);\n\nrb4 = Bitmap::fast_or(\u0026[\u0026rb1, \u0026rb2, \u0026rb3]);\n\nprintln!(\"{:?}\", rb4);\n```\n\nFor 64bit Bitmap support, checkout the [`Treemap`](https://docs.rs/croaring/0.4.0/croaring/treemap/struct.Treemap.html). `Treemap` is not API-compatible with `Bitmap`, yet most the functionality is overlapping.\n\n### Treemap usage example\n\n```rust\nuse std::u64;\nuse croaring::Treemap;\n\nlet mut treemap = Treemap::new();\ntreemap.add(u64::MAX);\ntreemap.remove(u64::MAX);\n\n/// Serialization compatible with croaring Treemap version at https://github.com/RoaringBitmap/CRoaring/blob/b88b002407b42fafaea23ea5009a54a24d1c1ed4/cpp/roaring64map.hh\n\nuse croaring::treemap::NativeSerializer;\n\nlet mut treemap1 = Treemap::new();\n\nfor i in 100..1000 {\n  treemap1.add(i);\n}\n\ntreemap1.add(std::u32::MAX as u64);\ntreemap1.add(std::u64::MAX);\n\n/// Serialization compatible with JVM Treemap version at https://github.com/RoaringBitmap/RoaringBitmap/blob/34654b2d5c3e75e7f9bca1672f4c0b5800d60cf3/roaringbitmap/src/main/java/org/roaringbitmap/longlong/Roaring64NavigableMap.java\nuse croaring::treemap::JvmSerializer;\n\nlet mut treemap2 = Treemap::new();\n\nfor i in 100..1000 {\n  treemap2.add(i);\n}\n\ntreemap2.add(std::u32::MAX as u64);\ntreemap2.add(std::u64::MAX);\n```\n\n### Building\n\n```\ngit clone --recursive https://github.com/RoaringBitmap/croaring-rs/\ncd croaring-rs\ncargo build\n```\n\nIn `croaring-rs`, just like in [CRoaring](https://github.com/RoaringBitmap/CRoaring/),\nsome CPU related code optimizations are enabled dynamically at runtime. If you are\nbuilding binaries for specific CPU architectures you can specify `ROARING_ARCH` environment \nvariable to control enabled code optimizations, e.g. \n`ROARING_ARCH=ivybridge cargo build --release`.\n\n### Testing\n\nRunning unit tests and doc tests:\n\n```\ncargo test\n```\n\nRunning benchmark suite (currently on Rust nightly toolchain only):\n\n```\ncargo bench\n```\n\n### Documentation\n\nCurrent documentation is available at https://docs.rs/croaring/latest/croaring/\n\n## CRoaring Version\n\nThis crate uses [CRoaring version `4.3.1`](https://github.com/RoaringBitmap/CRoaring/releases/tag/v4.3.1).\nThe version of this crate does not necessarily match the version of CRoaring: the major version of the crate is only\nincremented when there are breaking changes in the Rust API: It is possible (and has happened) that breaking changes\nin the CRoaring C API do not necessitate a major version bump in this crate.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRoaringBitmap%2Fcroaring-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRoaringBitmap%2Fcroaring-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRoaringBitmap%2Fcroaring-rs/lists"}