Development Documentation (main branch) - For stable release docs, see docs.rs/eidetica
Skip to main content

SyncError

Enum SyncError 

Source
#[non_exhaustive]
pub enum SyncError {
Show 41 variants NoTransportEnabled, SyncNotEnabled, ServerAlreadyRunning { address: String, }, ServerNotRunning, UnexpectedResponse { expected: &'static str, actual: String, }, Network(String), CommandSendError(String), TransportInit(String), RuntimeCreation(String), ServerBind { address: String, reason: String, }, ConnectionFailed { address: String, reason: String, }, Timeout { address: String, phase: TimeoutPhase, elapsed: Duration, }, DeviceKeyNotFound { key_name: String, }, UnsupportedTransport { transport_type: String, }, InvalidAddress(String), PeerNotFound(String), PeerAlreadyExists(String), SerializationError(String), ProtocolMismatch { expected: u32, received: u32, }, HandshakeFailed(String), EntryNotFound(ID), InvalidEntry(String), SyncProtocolError(String), BackendError(String), RequestNotFound(String), RequestAlreadyExists(String), InvalidRequestState { request_id: String, current_status: String, expected_status: String, }, InvalidData(String), InsufficientPermission { request_id: String, required_permission: String, actual_permission: Permission, }, AuthenticationRequired(String), AuthenticationFailed(String), PermissionDenied(String), InvalidPublicKey { reason: String, }, InvalidKeyName { reason: String, }, InstanceDropped, BootstrapPending { request_id: String, message: String, }, BootstrapRejected { request_id: String, message: String, }, TransportTypeMismatch { name: String, expected: String, found: String, }, TransportNotFound { name: String, }, NoTransportForAddress { address: Address, }, MultipleTransportErrors { errors: Vec<String>, },
}
Expand description

Errors that can occur during synchronization operations.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

NoTransportEnabled

No transport has been enabled for network operations.

§

SyncNotEnabled

Sync has not been enabled on the Instance.

§

ServerAlreadyRunning

Attempted to start a server when one is already running.

Fields

§address: String
§

ServerNotRunning

Attempted to stop a server when none is running.

§

UnexpectedResponse

Unexpected response type received from peer.

Fields

§expected: &'static str
§actual: String
§

Network(String)

Network communication error.

§

CommandSendError(String)

Command channel send error.

§

TransportInit(String)

Transport initialization error.

§

RuntimeCreation(String)

Runtime creation error for async operations.

§

ServerBind

Server bind error.

Fields

§address: String
§reason: String
§

ConnectionFailed

Client connection error.

Fields

§address: String
§reason: String
§

Timeout

A peer did not answer within the transport’s deadline.

Kept apart from SyncError::ConnectionFailed and SyncError::Network because a caller reacts differently to silence than to a refusal: a peer that never answered is worth asking again, while one that answered with an error usually is not. phase carries what the peer proved about itself before the deadline.

Fields

§address: String
§elapsed: Duration
§

DeviceKeyNotFound

Device key not found in backend storage.

Fields

§key_name: String
§

UnsupportedTransport

Transport type not supported by this transport implementation.

Fields

§transport_type: String
§

InvalidAddress(String)

Invalid address format.

§

PeerNotFound(String)

Peer not found.

§

PeerAlreadyExists(String)

Peer already exists.

§

SerializationError(String)

Serialization error.

§

ProtocolMismatch

Protocol version mismatch.

Fields

§expected: u32
§received: u32
§

HandshakeFailed(String)

Handshake failed.

§

EntryNotFound(ID)

Entry not found in backend storage.

§

InvalidEntry(String)

Invalid entry received (validation failed).

§

SyncProtocolError(String)

Sync protocol error.

§

BackendError(String)

Backend storage error.

§

RequestNotFound(String)

Bootstrap request not found.

§

RequestAlreadyExists(String)

Bootstrap request already exists.

§

InvalidRequestState

Invalid bootstrap request state.

Fields

§request_id: String
§current_status: String
§expected_status: String
§

InvalidData(String)

Invalid data format in stored bootstrap request.

§

InsufficientPermission

Insufficient permission for the requested operation.

Fields

§request_id: String
§required_permission: String
§actual_permission: Permission
§

AuthenticationRequired(String)

A request that would be served data carried no proof of key possession.

§

AuthenticationFailed(String)

The proof of key possession did not hold up.

§

PermissionDenied(String)

The caller proved its key, but that key has no read access.

§

InvalidPublicKey

Invalid public key provided.

Fields

§reason: String
§

InvalidKeyName

Invalid key name provided.

Fields

§reason: String
§

InstanceDropped

Instance has been dropped and is no longer available.

§

BootstrapPending

Bootstrap request is pending manual approval.

Fields

§request_id: String
§message: String
§

BootstrapRejected

Bootstrap request was rejected by an administrator.

Fields

§request_id: String
§message: String
§

TransportTypeMismatch

Transport configuration type mismatch.

Fields

§name: String
§expected: String
§found: String
§

TransportNotFound

Transport not found by name.

Fields

§name: String
§

NoTransportForAddress

No transport can handle the given address.

Fields

§address: Address
§

MultipleTransportErrors

Multiple transport operations failed.

Fields

§errors: Vec<String>

Implementations§

Source§

impl SyncError

Source

pub fn is_configuration_error(&self) -> bool

Check if this is a configuration error: the sync stack isn’t ready (sync not attached or no transport registered).

Source

pub fn is_server_error(&self) -> bool

Check if this is a server lifecycle error.

Source

pub fn is_network_error(&self) -> bool

Check if this is a network/connection error.

Includes timeouts: a deadline that expires is one way a network call fails, and callers classifying by this predicate should not have to learn about a new variant to keep treating it as one.

Source

pub fn timeout_phase(&self) -> Option<TimeoutPhase>

Check if this is a timeout, and if so in which phase.

Some(TimeoutPhase::Request) means the peer was reachable and stopped answering; Some(TimeoutPhase::Connect) means it never answered at all.

Source

pub fn is_timeout(&self) -> bool

Check if this is a timeout rather than a refusal or a protocol failure.

Source

pub fn is_protocol_error(&self) -> bool

Check if this is a protocol error (unexpected response).

Source

pub fn is_not_found(&self) -> bool

Check if this is a not found error.

Source

pub fn is_validation_error(&self) -> bool

Check if this is a validation error.

Source

pub fn is_backend_error(&self) -> bool

Check if this is a backend error.

Trait Implementations§

Source§

impl Debug for SyncError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for SyncError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for SyncError

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<SyncError> for Error

Source§

fn from(err: SyncError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,