Ivan FB 84f7daa0ce
docs: make the available operations discoverable; document local use
Consuming apps depend on this crate from a local checkout, and the
operations were hard to find: the crate root was `pub use waku_sys::*`,
so everything a caller can do was hidden as methods on a glob-exported
LogosDeliveryCtx.

The crate-root docs now carry an Operations map — node lifecycle,
messaging, reliable channels, and the typed event listeners — with the
method names and a runnable example, so `cargo doc` and reading lib.rs
both show what is callable. The low-level waku_* kernel surface is noted
as the tier beneath.

The README gains a "Using the crate" section: clone + checkout, the
local path dependency, and the Nim/make/Rust build prerequisites.

Also fixes stale rustdoc links in the restored store DTOs and a bare URL
in the config docs, so the doc build is warning-clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:41:03 +02:00

69 lines
2.7 KiB
Markdown

# Waku Rust bindings
[![Crates.io][crates-badge]][crates-url]
[![Documentation][docs-badge]][docs-url]
[![Build Status][actions-badge]][actions-url]
[![Codecov Status][codecov-badge]][codecov-url]
[crates-badge]: https://img.shields.io/crates/v/waku-bindings.svg
[crates-url]: https://crates.io/crates/waku-bindings
[docs-badge]: https://docs.rs/waku-bindings/badge.svg
[docs-url]: https://docs.rs/waku-bindings
[actions-badge]: https://github.com/logos-messaging/logos-messaging-rust-bindings/workflows/CI/badge.svg
[actions-url]: https://github.com/logos-messaging/logos-messaging-rust-bindings/actions/workflows/main.yml?query=workflow%3ACI+branch%3Amaster
[codecov-badge]: https://codecov.io/github/logos-messaging/logos-messaging-rust-bindings/branch/main/graph/badge.svg?token=H4CQWRUCUS
[codecov-url]: https://codecov.io/github/logos-messaging/logos-messaging-rust-bindings
Rust layer on top of [`logos-messaging-nim`](https://github.com/logos-messaging/logos-messaging-nim) [C FFI bindings](https://github.com/logos-messaging/logos-messaging-nim/blob/master/library/libwaku.h).
## Using the crate
For now this crate is consumed from a local checkout rather than a registry.
1. Clone the repo and check out the branch you want:
```sh
git clone --recurse-submodules https://github.com/logos-messaging/logos-delivery-rust-bindings
cd logos-delivery-rust-bindings
git checkout <branch>
git submodule update --init --recursive
```
2. Point your app at it by path:
```toml
# your app's Cargo.toml
[dependencies]
waku-bindings = { path = "../logos-delivery-rust-bindings/waku-bindings" }
```
### Build prerequisites
`waku-bindings` builds the underlying Nim library from source the first time,
so the toolchain has to be present:
- **Nim** and **nimble** (installed by the vendored `make` targets, or bring
your own on `PATH`)
- **make** and a C/C++ toolchain
- A **Rust** toolchain (RLN is built from source)
The first build compiles the whole logos-delivery tree and is slow; subsequent
builds are incremental.
## What you can call
Everything is driven through `LogosDeliveryCtx` (re-exported at the crate root).
The crate docs group the available operations — node lifecycle, messaging,
reliable channels, and the typed event listeners — under **Operations**; run
`cargo doc --open -p waku-bindings` for the full, linked method list. A minimal
end-to-end example lives in [`examples/basic`](examples/basic).
## About Waku
[Waku](https://waku.org/) is a family of robust and censorship-resistant communication protocols enabling privacy-focused messaging for Web3 applications.
Private. Secure. Runs anywhere.
Read the [Waku docs](https://docs.waku.org/)