Struct LibraryError
pub struct LibraryError { /* private fields */ }Expand description
Generic error type that indicates unrecoverable errors in the library.
This error has 3 subtypes:
MissingBoundsCheck
This error is returned when the library tries to serialize data that is too big for the MLS structs. In particular, when element lists contain more elements than the theoretical maximum defined in the spec, the serialization will fail. This should not happen when all input values are checked.
CryptoError
This error is returned if the underlying crypto provider encountered an unexpected error. Possible reasons for this could be: the implementation of the crypto provider is not correct, the key material is not correct, the crypto provider does not support all functions required. Another reason could be that the OpenMLS library does not use the crypto provider API correctly.
Custom
This error is returned in situations where the implementation would otherwise use an unwrap().
If applications receive this error, it clearly indicates an implementation mistake in OpenMLS. The error
includes a string that can give some more context about where the error originated and helps debugging.
In all cases, when a LibraryError is returned, applications should try to recover gracefully from it.
It is recommended to log the error for potential debugging.
Trait Implementations§
§impl Clone for LibraryError
impl Clone for LibraryError
§fn clone(&self) -> LibraryError
fn clone(&self) -> LibraryError
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for LibraryError
impl Debug for LibraryError
§impl Display for LibraryError
impl Display for LibraryError
§impl Error for LibraryError
impl Error for LibraryError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
§impl<StorageError> From<LibraryError> for AddMembersError<StorageError>
impl<StorageError> From<LibraryError> for AddMembersError<StorageError>
§fn from(source: LibraryError) -> AddMembersError<StorageError>
fn from(source: LibraryError) -> AddMembersError<StorageError>
§impl From<LibraryError> for ApplyUpdatePathError
impl From<LibraryError> for ApplyUpdatePathError
§fn from(source: LibraryError) -> ApplyUpdatePathError
fn from(source: LibraryError) -> ApplyUpdatePathError
§impl<StorageError> From<LibraryError> for CommitBuilderStageError<StorageError>
impl<StorageError> From<LibraryError> for CommitBuilderStageError<StorageError>
§fn from(source: LibraryError) -> CommitBuilderStageError<StorageError>
fn from(source: LibraryError) -> CommitBuilderStageError<StorageError>
§impl<StorageError> From<LibraryError> for CommitToPendingProposalsError<StorageError>
impl<StorageError> From<LibraryError> for CommitToPendingProposalsError<StorageError>
§fn from(source: LibraryError) -> CommitToPendingProposalsError<StorageError>
fn from(source: LibraryError) -> CommitToPendingProposalsError<StorageError>
§impl From<LibraryError> for CreateAddProposalError
impl From<LibraryError> for CreateAddProposalError
§fn from(source: LibraryError) -> CreateAddProposalError
fn from(source: LibraryError) -> CreateAddProposalError
§impl From<LibraryError> for CreateCommitError
impl From<LibraryError> for CreateCommitError
§fn from(source: LibraryError) -> CreateCommitError
fn from(source: LibraryError) -> CreateCommitError
§impl<StorageError> From<LibraryError> for CreateGroupContextExtProposalError<StorageError>
impl<StorageError> From<LibraryError> for CreateGroupContextExtProposalError<StorageError>
§fn from(
source: LibraryError,
) -> CreateGroupContextExtProposalError<StorageError>
fn from( source: LibraryError, ) -> CreateGroupContextExtProposalError<StorageError>
§impl From<LibraryError> for CreateMessageError
impl From<LibraryError> for CreateMessageError
§fn from(source: LibraryError) -> CreateMessageError
fn from(source: LibraryError) -> CreateMessageError
§impl<StorageError> From<LibraryError> for CreationFromExternalError<StorageError>
impl<StorageError> From<LibraryError> for CreationFromExternalError<StorageError>
§fn from(source: LibraryError) -> CreationFromExternalError<StorageError>
fn from(source: LibraryError) -> CreationFromExternalError<StorageError>
§impl From<LibraryError> for CredentialError
impl From<LibraryError> for CredentialError
§fn from(source: LibraryError) -> CredentialError
fn from(source: LibraryError) -> CredentialError
§impl From<LibraryError> for ExportGroupInfoError
impl From<LibraryError> for ExportGroupInfoError
§fn from(source: LibraryError) -> ExportGroupInfoError
fn from(source: LibraryError) -> ExportGroupInfoError
§impl From<LibraryError> for ExportSecretError
impl From<LibraryError> for ExportSecretError
§fn from(source: LibraryError) -> ExportSecretError
fn from(source: LibraryError) -> ExportSecretError
§impl From<LibraryError> for ExtensionError
impl From<LibraryError> for ExtensionError
§fn from(source: LibraryError) -> ExtensionError
fn from(source: LibraryError) -> ExtensionError
§impl<StorageError> From<LibraryError> for ExternalCommitBuilderError<StorageError>
impl<StorageError> From<LibraryError> for ExternalCommitBuilderError<StorageError>
§fn from(source: LibraryError) -> ExternalCommitBuilderError<StorageError>
fn from(source: LibraryError) -> ExternalCommitBuilderError<StorageError>
§impl<StorageError> From<LibraryError> for ExternalCommitBuilderFinalizeError<StorageError>
impl<StorageError> From<LibraryError> for ExternalCommitBuilderFinalizeError<StorageError>
§fn from(
source: LibraryError,
) -> ExternalCommitBuilderFinalizeError<StorageError>
fn from( source: LibraryError, ) -> ExternalCommitBuilderFinalizeError<StorageError>
§impl<StorageError> From<LibraryError> for ExternalCommitError<StorageError>
impl<StorageError> From<LibraryError> for ExternalCommitError<StorageError>
§fn from(source: LibraryError) -> ExternalCommitError<StorageError>
fn from(source: LibraryError) -> ExternalCommitError<StorageError>
§impl From<LibraryError> for ExternalCommitValidationError
impl From<LibraryError> for ExternalCommitValidationError
§fn from(source: LibraryError) -> ExternalCommitValidationError
fn from(source: LibraryError) -> ExternalCommitValidationError
§impl From<LibraryError> for GroupContextExtensionsProposalValidationError
impl From<LibraryError> for GroupContextExtensionsProposalValidationError
§fn from(source: LibraryError) -> GroupContextExtensionsProposalValidationError
fn from(source: LibraryError) -> GroupContextExtensionsProposalValidationError
§impl From<LibraryError> for KeyPackageNewError
impl From<LibraryError> for KeyPackageNewError
§fn from(source: LibraryError) -> KeyPackageNewError
fn from(source: LibraryError) -> KeyPackageNewError
§impl From<LibraryError> for KeyPackageVerifyError
impl From<LibraryError> for KeyPackageVerifyError
§fn from(source: LibraryError) -> KeyPackageVerifyError
fn from(source: LibraryError) -> KeyPackageVerifyError
§impl<StorageError> From<LibraryError> for LeafNodeUpdateError<StorageError>
impl<StorageError> From<LibraryError> for LeafNodeUpdateError<StorageError>
§fn from(source: LibraryError) -> LeafNodeUpdateError<StorageError>
fn from(source: LibraryError) -> LeafNodeUpdateError<StorageError>
§impl<StorageError> From<LibraryError> for LeaveGroupError<StorageError>
impl<StorageError> From<LibraryError> for LeaveGroupError<StorageError>
§fn from(source: LibraryError) -> LeaveGroupError<StorageError>
fn from(source: LibraryError) -> LeaveGroupError<StorageError>
§impl<StorageError> From<LibraryError> for MergeCommitError<StorageError>
impl<StorageError> From<LibraryError> for MergeCommitError<StorageError>
§fn from(source: LibraryError) -> MergeCommitError<StorageError>
fn from(source: LibraryError) -> MergeCommitError<StorageError>
§impl From<LibraryError> for MessageDecryptionError
impl From<LibraryError> for MessageDecryptionError
§fn from(source: LibraryError) -> MessageDecryptionError
fn from(source: LibraryError) -> MessageDecryptionError
§impl From<LibraryError> for MlsGroupStateError
impl From<LibraryError> for MlsGroupStateError
§fn from(source: LibraryError) -> MlsGroupStateError
fn from(source: LibraryError) -> MlsGroupStateError
§impl<StorageError> From<LibraryError> for NewGroupError<StorageError>
impl<StorageError> From<LibraryError> for NewGroupError<StorageError>
§fn from(source: LibraryError) -> NewGroupError<StorageError>
fn from(source: LibraryError) -> NewGroupError<StorageError>
§impl<StorageError> From<LibraryError> for ProcessMessageError<StorageError>
impl<StorageError> From<LibraryError> for ProcessMessageError<StorageError>
§fn from(source: LibraryError) -> ProcessMessageError<StorageError>
fn from(source: LibraryError) -> ProcessMessageError<StorageError>
§impl<StorageError> From<LibraryError> for ProposalError<StorageError>
impl<StorageError> From<LibraryError> for ProposalError<StorageError>
§fn from(source: LibraryError) -> ProposalError<StorageError>
fn from(source: LibraryError) -> ProposalError<StorageError>
§impl From<LibraryError> for ProposalValidationError
impl From<LibraryError> for ProposalValidationError
§fn from(source: LibraryError) -> ProposalValidationError
fn from(source: LibraryError) -> ProposalValidationError
§impl<StorageError> From<LibraryError> for ProposeAddMemberError<StorageError>
impl<StorageError> From<LibraryError> for ProposeAddMemberError<StorageError>
§fn from(source: LibraryError) -> ProposeAddMemberError<StorageError>
fn from(source: LibraryError) -> ProposeAddMemberError<StorageError>
§impl From<LibraryError> for ProposePskError
impl From<LibraryError> for ProposePskError
§fn from(source: LibraryError) -> ProposePskError
fn from(source: LibraryError) -> ProposePskError
§impl<StorageError> From<LibraryError> for ProposeRemoveMemberError<StorageError>
impl<StorageError> From<LibraryError> for ProposeRemoveMemberError<StorageError>
§fn from(source: LibraryError) -> ProposeRemoveMemberError<StorageError>
fn from(source: LibraryError) -> ProposeRemoveMemberError<StorageError>
§impl<StorageError> From<LibraryError> for ProposeSelfUpdateError<StorageError>
impl<StorageError> From<LibraryError> for ProposeSelfUpdateError<StorageError>
§fn from(source: LibraryError) -> ProposeSelfUpdateError<StorageError>
fn from(source: LibraryError) -> ProposeSelfUpdateError<StorageError>
§impl From<LibraryError> for PskError
impl From<LibraryError> for PskError
§fn from(source: LibraryError) -> PskError
fn from(source: LibraryError) -> PskError
§impl From<LibraryError> for PublicGroupBuildError
impl From<LibraryError> for PublicGroupBuildError
§fn from(source: LibraryError) -> PublicGroupBuildError
fn from(source: LibraryError) -> PublicGroupBuildError
§impl From<LibraryError> for PublicProcessMessageError
impl From<LibraryError> for PublicProcessMessageError
§fn from(source: LibraryError) -> PublicProcessMessageError
fn from(source: LibraryError) -> PublicProcessMessageError
§impl From<LibraryError> for PublicTreeError
impl From<LibraryError> for PublicTreeError
§fn from(source: LibraryError) -> PublicTreeError
fn from(source: LibraryError) -> PublicTreeError
§impl<StorageError> From<LibraryError> for RemoveMembersError<StorageError>
impl<StorageError> From<LibraryError> for RemoveMembersError<StorageError>
§fn from(source: LibraryError) -> RemoveMembersError<StorageError>
fn from(source: LibraryError) -> RemoveMembersError<StorageError>
§impl<StorageError> From<LibraryError> for SelfUpdateError<StorageError>
impl<StorageError> From<LibraryError> for SelfUpdateError<StorageError>
§fn from(source: LibraryError) -> SelfUpdateError<StorageError>
fn from(source: LibraryError) -> SelfUpdateError<StorageError>
§impl<StorageError> From<LibraryError> for SetupError<StorageError>
impl<StorageError> From<LibraryError> for SetupError<StorageError>
§fn from(source: LibraryError) -> SetupError<StorageError>
fn from(source: LibraryError) -> SetupError<StorageError>
§impl From<LibraryError> for StageCommitError
impl From<LibraryError> for StageCommitError
§fn from(source: LibraryError) -> StageCommitError
fn from(source: LibraryError) -> StageCommitError
§impl<StorageError> From<LibraryError> for SwapMembersError<StorageError>
impl<StorageError> From<LibraryError> for SwapMembersError<StorageError>
§fn from(source: LibraryError) -> SwapMembersError<StorageError>
fn from(source: LibraryError) -> SwapMembersError<StorageError>
§impl From<LibraryError> for TreeSyncAddLeaf
impl From<LibraryError> for TreeSyncAddLeaf
§fn from(source: LibraryError) -> TreeSyncAddLeaf
fn from(source: LibraryError) -> TreeSyncAddLeaf
§impl From<LibraryError> for TreeSyncFromNodesError
impl From<LibraryError> for TreeSyncFromNodesError
§fn from(source: LibraryError) -> TreeSyncFromNodesError
fn from(source: LibraryError) -> TreeSyncFromNodesError
§impl From<LibraryError> for ValidationError
impl From<LibraryError> for ValidationError
§fn from(source: LibraryError) -> ValidationError
fn from(source: LibraryError) -> ValidationError
§impl<StorageError> From<LibraryError> for WelcomeError<StorageError>
impl<StorageError> From<LibraryError> for WelcomeError<StorageError>
§fn from(source: LibraryError) -> WelcomeError<StorageError>
fn from(source: LibraryError) -> WelcomeError<StorageError>
§impl PartialEq for LibraryError
impl PartialEq for LibraryError
impl Eq for LibraryError
impl StructuralPartialEq for LibraryError
Auto Trait Implementations§
impl Freeze for LibraryError
impl RefUnwindSafe for LibraryError
impl Send for LibraryError
impl Sync for LibraryError
impl Unpin for LibraryError
impl UnwindSafe for LibraryError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Classify for T
impl<T> Classify for T
type Classified = T
fn classify(self) -> T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Declassify for T
impl<T> Declassify for T
type Declassified = T
fn declassify(self) -> T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.