suck 0.0.3

Suck data up through a channel
use thiserror::Error;

/// Errors that can occur when using the suck channel
#[derive(Error, Debug, Clone, PartialEq, Eq)]
pub enum Error {
    /// Channel has been closed gracefully
    #[error("Channel closed")]
    ChannelClosed,

    /// Producer has disconnected unexpectedly
    #[error("Producer disconnected")]
    ProducerDisconnected,

    /// No value source has been set
    #[error("Producer has not set a source value")]
    NoSource,

    /// Internal error (e.g., mutex poisoning or source execution failure)
    #[error("Internal error occurred")] // TODO: Expand on this
    InternalError,
}