librecast 1.0.1

Rust bindings for the librecast library
Documentation
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
// Copyright (c) 2025 Gavin Henry <ghenry@sentrypeer.org>

use librecast::Librecast;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a new librecast context
    let librecast = Librecast::new()?;

    // Create a channel using the builder pattern
    let channel = librecast
        .channel_builder()
        .name("example-channel")
        .enable_raptorq()
        .build()?;

    // Join the channel
    channel.join()?;

    // Receive a message
    let mut buffer = vec![0u8; 1024]; // Buffer to hold received data
    match channel.receive(&mut buffer) {
        Ok(size) => {
            // Process the received data
            let received_data = &buffer[..size];
            println!(
                "Received data: {:?}",
                String::from_utf8_lossy(received_data)
            );
        }
        Err(e) => {
            eprintln!("Failed to receive data: {}", e);
        }
    }

    // Leave the channel
    channel.leave()?;

    Ok(())
}