pub trait ControllerProxyInterface: Send + Sync {
type UpdateAnnotationsResponseFut: Future<Output = Result<AnnotationControllerUpdateAnnotationsResult, Error>> + Send;
type GetAnnotationsResponseFut: Future<Output = Result<AnnotationControllerGetAnnotationsResult, Error>> + Send;
type WatchAnnotationsResponseFut: Future<Output = Result<AnnotationControllerWatchAnnotationsResult, Error>> + Send;
// Required methods
fn update_annotations(
&self,
annotations_to_set: &mut dyn ExactSizeIterator<Item = &mut Annotation>,
annotations_to_delete: &mut dyn ExactSizeIterator<Item = &mut AnnotationKey>
) -> Self::UpdateAnnotationsResponseFut;
fn get_annotations(&self) -> Self::GetAnnotationsResponseFut;
// Provided method
fn watch_annotations(&self) -> Self::WatchAnnotationsResponseFut { ... }
}