pub trait WatchedValueCore<'ctx, O: ?Sized> {
type Value;
// Required methods
fn get(self, ctx: WatchArg<'_, 'ctx, O>) -> Self::Value;
fn get_unwatched(self) -> Self::Value;
// Provided method
fn map<F, U>(self, map_fn: F) -> impl WatchedValueCore<'ctx, O, Value = U>
where Self: Sized,
F: FnOnce(Self::Value) -> U { ... }
}