Flume is a multi-producer, multi-consumer channel implementation for Rust that provides safe, fast inter-thread communication.
The tool solves the problem of coordinating work across multiple threads by offering a channel abstraction that avoids unsafe code entirely while delivering performance competitive with or exceeding the standard library's mpsc implementation. It supports unbounded, bounded, and rendezvous queue modes, allowing developers to choose the synchronization strategy that fits their workload. Both senders and receivers are cloneable and implement Send and Sync, enabling flexible patterns of channel ownership across threads.
Flume suits projects that need reliable multi-threaded communication without the performance overhead of the standard library's channels. It works as a drop-in replacement for std::sync::mpsc, making adoption straightforward in existing codebases. The tool distinguishes itself through optional features including a select-like interface for waiting on multiple channels simultaneously, async support that can be mixed with synchronous code, and configurable spinlock-based synchronization for specific workloads. Developers should note that the project is in casual maintenance mode, meaning critical fixes continue but heavy feature development has ceased; the maintainer considers the crate largely feature-complete.
The project receives critical security and bug fixes but does not pursue new features actively. Pull requests for enhancements are welcomed and reviewed when time permits. The codebase is intentionally minimal with few dependencies, prioritizing fast compilation and simplicity alongside performance.