From b5a659f8a7315506a101a9fe6e73c623c019e4a3 Mon Sep 17 00:00:00 2001 From: Callum Leslie Date: Tue, 2 Sep 2025 16:22:20 +0100 Subject: [PATCH] feat: add message types to be sent over channels --- src/lib.rs | 5 +++++ src/types.rs | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/types.rs diff --git a/src/lib.rs b/src/lib.rs index f5e9443..5e53dcf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,8 @@ #![doc = include_str!("../README.md")] pub mod error; +pub mod types; + +// Re-exports +pub use error::Error; +pub use types::ValueSource; diff --git a/src/types.rs b/src/types.rs new file mode 100644 index 0000000..f56fb85 --- /dev/null +++ b/src/types.rs @@ -0,0 +1,25 @@ +/// Request messages sent from consumer to producer +pub enum Request { + GetValue, + Close, +} + +/// Response messages sent from producer to consumer +pub enum Response { + Value(T), + NoSource, + Closed, +} + +/// Represents the source of values: either static or dynamic +pub enum ValueSource { + Static(T), + Dynamic(Box T + Send + Sync + 'static>), + None, +} + +/// Internal channel state shared between producer and consumer +pub struct ChannelState { + pub source: ValueSource, + pub closed: bool, +}