Embed in your Rust app
The library crates aren't on crates.io yet — pull them as git
dependencies pinned to a release tag. Cargo dedupes git deps by
URL, so both crates resolve out of the same checkout.
[dependencies]
myownmesh-core = { git = "https://github.com/mrjeeves/MyOwnMesh", tag = "v0.1.0" }
myownmesh-signaling = { git = "https://github.com/mrjeeves/MyOwnMesh", tag = "v0.1.0" } # Nostr driver
tokio = { version = "1", features = ["full"] }
use myownmesh_core::{Mesh, MeshConfig, NetworkConfig, TopologyMode};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mesh = Mesh::open(MeshConfig::load().unwrap_or_default()).await?;
let net = mesh.join(NetworkConfig {
id: "home".into(),
network_id: "my-cool-mesh".into(),
label: "Home mesh".into(),
topology: TopologyMode::default(), // Ring
signaling: Default::default(), // Nostr defaults
stun_servers: Default::default(),
turn_servers: Default::default(),
roster_path: None,
auto_approve: false,
}).await?;
let _nostr = myownmesh_core::engine::attach_nostr(&net.state());
let mut events = mesh.events();
while let Ok(event) = events.recv().await {
println!("{event:?}");
}
Ok(())
}