use crate::{ProjectInput, Result}; use std::{collections::BTreeMap, future::Future, pin::Pin}; pub type Documents = BTreeMap; pub type Refresh<'a> = Pin> + 'a>>; /// The host owns acquisition, configuration and graph invalidation. Each refresh /// supplies an immutable generation; the native adapter never discovers imports. /// This future may be local: avril's runtime resolver uses thread-local graph state. pub trait ProjectService { fn refresh(&mut self, documents: Documents) -> Refresh<'_>; fn changed(&mut self) -> bool { false } }