rust-ipfs 0.15.0

IPFS node implementation
Documentation
#[tokio::main]
async fn main() -> anyhow::Result<()> {
    use ipld_core::ipld;
    use rust_ipfs::builder::DefaultIpfsBuilder as IpfsBuilder;
    use rust_ipfs::Ipfs;
    use rust_ipfs::IpfsPath;
    // tracing_subscriber::fmt::init();

    // Initialize the repo and start a daemon
    let ipfs: Ipfs = IpfsBuilder::new()
        .with_default()
        .add_listening_addr("/ip4/0.0.0.0/tcp/0".parse()?)
        .with_mdns()
        .with_relay(true)
        .default_record_key_validator()
        .start()
        .await?;

    ipfs.default_bootstrap().await?;

    // ipfs.bootstrap().await?;

    let block_a = ipld!({
        "name": "alice",
        "age": 99,
    });

    let cid = ipfs.put_dag(block_a).await?;

    let ipfs_path = IpfsPath::from(cid);

    let path = ipfs.publish_ipns(&ipfs_path).await?;

    println!("{ipfs_path} been published to {path}");

    tokio::signal::ctrl_c().await?;

    Ok(())
}