Skip to main content

CoreRefBackend

Trait CoreRefBackend 

Source
pub trait CoreRefBackend: Send + Sync {
    type Error;

Show 17 methods // Required methods fn read_head(&self) -> Result<Head, Self::Error>; fn write_head(&self, head: &Head) -> Result<(), Self::Error>; fn write_head_cas( &self, expected: RefExpectation<Head>, head: &Head, ) -> Result<(), Self::Error>; fn get_thread( &self, name: &ThreadName, ) -> impl Future<Output = Result<Option<ChangeId>, Self::Error>> + Send; fn set_thread( &self, name: &ThreadName, state: &ChangeId, ) -> Result<(), Self::Error>; fn set_thread_cas( &self, name: &ThreadName, expected: RefExpectation<ChangeId>, state: &ChangeId, ) -> Result<(), Self::Error>; fn delete_thread( &self, name: &ThreadName, ) -> Result<Option<ChangeId>, Self::Error>; fn delete_thread_cas( &self, name: &ThreadName, expected: RefExpectation<ChangeId>, ) -> Result<(), Self::Error>; fn list_threads(&self) -> Result<Vec<ThreadName>, Self::Error>; fn get_marker( &self, name: &MarkerName, ) -> impl Future<Output = Result<Option<ChangeId>, Self::Error>> + Send; fn create_marker( &self, name: &MarkerName, state: &ChangeId, ) -> impl Future<Output = Result<(), Self::Error>> + Send; fn set_marker_cas( &self, name: &MarkerName, expected: RefExpectation<ChangeId>, state: &ChangeId, ) -> Result<(), Self::Error>; fn delete_marker( &self, name: &MarkerName, ) -> Result<Option<ChangeId>, Self::Error>; fn delete_marker_cas( &self, name: &MarkerName, expected: RefExpectation<ChangeId>, ) -> Result<(), Self::Error>; fn list_markers(&self) -> Result<Vec<MarkerName>, Self::Error>; fn update_refs(&self, updates: &[RefUpdate]) -> Result<(), Self::Error>; // Provided method fn resolve( &self, refspec: &str, ) -> impl Future<Output = Result<Option<ChangeId>, Self::Error>> + Send { ... }
}
Expand description

Shared refs backend operations usable by both local and hosted backends.

The database-hitting reads (get_thread, get_marker, create_marker, resolve) are async so the Postgres backend can .await sqlx directly instead of bridging through a worker-thread runtime. They’re spelled as -> impl Future + Send rather than async fn so the returned future carries an explicit Send bound (required by the hosted server’s Tower/tonic stack) and the trait stays clean under -D warnings (the async_fn_in_trait lint). This is a sealed interface — heddle is the sole implementer — so the lint’s downstream-bound concern does not apply.

Required Associated Types§

Required Methods§

Source

fn read_head(&self) -> Result<Head, Self::Error>

Source

fn write_head(&self, head: &Head) -> Result<(), Self::Error>

Source

fn write_head_cas( &self, expected: RefExpectation<Head>, head: &Head, ) -> Result<(), Self::Error>

Source

fn get_thread( &self, name: &ThreadName, ) -> impl Future<Output = Result<Option<ChangeId>, Self::Error>> + Send

Source

fn set_thread( &self, name: &ThreadName, state: &ChangeId, ) -> Result<(), Self::Error>

Source

fn set_thread_cas( &self, name: &ThreadName, expected: RefExpectation<ChangeId>, state: &ChangeId, ) -> Result<(), Self::Error>

Source

fn delete_thread( &self, name: &ThreadName, ) -> Result<Option<ChangeId>, Self::Error>

Source

fn delete_thread_cas( &self, name: &ThreadName, expected: RefExpectation<ChangeId>, ) -> Result<(), Self::Error>

Source

fn list_threads(&self) -> Result<Vec<ThreadName>, Self::Error>

Source

fn get_marker( &self, name: &MarkerName, ) -> impl Future<Output = Result<Option<ChangeId>, Self::Error>> + Send

Source

fn create_marker( &self, name: &MarkerName, state: &ChangeId, ) -> impl Future<Output = Result<(), Self::Error>> + Send

Source

fn set_marker_cas( &self, name: &MarkerName, expected: RefExpectation<ChangeId>, state: &ChangeId, ) -> Result<(), Self::Error>

Source

fn delete_marker( &self, name: &MarkerName, ) -> Result<Option<ChangeId>, Self::Error>

Source

fn delete_marker_cas( &self, name: &MarkerName, expected: RefExpectation<ChangeId>, ) -> Result<(), Self::Error>

Source

fn list_markers(&self) -> Result<Vec<MarkerName>, Self::Error>

Source

fn update_refs(&self, updates: &[RefUpdate]) -> Result<(), Self::Error>

Provided Methods§

Source

fn resolve( &self, refspec: &str, ) -> impl Future<Output = Result<Option<ChangeId>, Self::Error>> + Send

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§