{"id":13822485,"url":"https://github.com/skade/lazers","last_synced_at":"2026-03-05T16:40:23.997Z","repository":{"id":66640266,"uuid":"63715500","full_name":"skade/lazers","owner":"skade","description":"A couchdb client in Rust","archived":false,"fork":false,"pushed_at":"2017-09-11T13:45:39.000Z","size":143,"stargazers_count":18,"open_issues_count":9,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-20T17:04:39.298Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://laze.rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skade.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2016-07-19T17:46:42.000Z","updated_at":"2025-02-21T14:24:43.000Z","dependencies_parsed_at":"2023-03-11T00:11:31.214Z","dependency_job_id":null,"html_url":"https://github.com/skade/lazers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/skade/lazers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skade%2Flazers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skade%2Flazers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skade%2Flazers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skade%2Flazers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skade","download_url":"https://codeload.github.com/skade/lazers/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skade%2Flazers/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261504184,"owners_count":23168772,"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-08-04T08:02:02.222Z","updated_at":"2026-03-05T16:40:23.946Z","avatar_url":"https://github.com/skade.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Laze RS\n\nWhat could become a CouchDB toolkit in Rust.\n\nUses literate programming through [tango](https://github.com/pnkfelix/tango) and tries hard to build nice APIs.\n\n[It is pronouced \"Laze RS\"](https://en.wiktionary.org/wiki/laze).\n\nSee [CONTRIBUTING](http://laze.rs/contributing.html) for a contribution guide.\n\n## Project state\n\nThis is currently mostly API experiments. I'm searching for help\nwith many of them.\n\nContributors welcome!\n\nFind a list of issues [here](https://github.com/skade/lazers/issues).\n\n## Notable specialties\n\n### Use of Tango\n\nTango is used to provide richer documentation by using literate programming to make writing descriptions the default.\n\n### Documentation-driven development\n\nFeatures, as experimental as they may be, should never be committed without extensive documentation.\n\nThis hasn't been followed through in the past and has been fixed, but there might be spots. These spots shouldn't happen again.\n\n### Use of decorated results\n\nDecorated results allow a form of result chaining that hides error handling until the very last step.\n\nSee [yakshav.es/decorating-results/](http://yakshav.es/decorating-results/) about how decorated results work.\n\n## Current Setup\n\nThe project currently consists of the following crates:\n\n* [lazers-traits](http://laze.rs/lazers-traits/src/lib/): A set of traits without implementations that describe the general interface towards a CouchDB(-like) database. It defines error and result types and interactions for writing and reading documents.\n\n* [lazers-hyper-client](http://laze.rs/lazers-hyper-client/src/lib/): A client implementing lazers-traits for a remote CouchDB using hyper. Currently also serves as an implementation example for the interface described in lazers-traits.\n\n* [lazers-changes-stream](http://laze.rs/lazers-changes-stream/src/lib/): An implementation of the CouchDB changes stream protocol. It is generic over any `Read` interface, so it depends on no http client.\n\n* [lazers-replicator](http://laze.rs/lazers-replicator/src/lib/): A (currently unfinished) implementation of the CouchDB replication protocol. Important features of the base libraries were missing, but it is still around as a placeholder or as a way to start.\n\n* [lazers-liblazers](http://laze.rs/lazers-liblazers/src/lib/): A C interface to the library. Still figuring a good way to do this. This interface is important, see [Long-Term Goals]\n\n## Notably missing\n\n* A second implementation of the lazers-traits interface for a local database\n* A good way to compile the md source documents into a doc site\n* A switch to tokio/futures-rs. I think this is the... future, so at some point the whole interface would need to be switched over.\n\n## Long-term goals\n\n* Provide a way to use Laze RS on iOS and Android similar to CouchBase lite.\n* Provide bindings towards several programming languages like Ruby/Python\n\n## Constraints\n\nThe library itself uses plain Serde for serialisation and deserialisation, this means some boilerplate work is required.\n\n## Credits\n\nHat tip to https://lobste.rs/u/gsquire for the final name idea.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskade%2Flazers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskade%2Flazers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskade%2Flazers/lists"}