diff --git a/cosmic-config/src/subscription.rs b/cosmic-config/src/subscription.rs index 64255954..9469c2bc 100644 --- a/cosmic-config/src/subscription.rs +++ b/cosmic-config/src/subscription.rs @@ -5,12 +5,18 @@ use std::{borrow::Cow, hash::Hash}; use crate::{Config, CosmicConfigEntry}; +/// Represents the state of a configuration watcher. +#[derive(Debug)] pub enum ConfigState { + /// Initial state before the configuration is loaded. Init(Cow<'static, str>, u64, bool), + /// Waiting for updates, holding current config and watcher. Waiting(T, RecommendedWatcher, mpsc::Receiver>, Config), - Failed, + /// Permanent failure state. + Failed(String), } +#[derive(Debug)] pub enum ConfigUpdate { Update(crate::Update), Failed, @@ -48,7 +54,6 @@ fn watcher_stream { @@ -97,7 +102,7 @@ async fn start_listening ConfigState::Failed, + None => ConfigState::Failed("channel closed".into()), }, ConfigState::Failed => pending().await, }