pub enum MigrationError {
Show 23 variants
MissingPolicyField(&'static str),
UnknownMetadataField(String),
NonConstrainedAdminPolicy(Option<i32>),
UpdatePermissionsNotSuperAdmin(Option<i32>),
Registry(ComponentRegistryError),
MissingMutableMetadataExtension,
MissingGroupMembershipExtension,
GroupMembershipDecode(DecodeError),
GroupPermissionsDecode(DecodeError),
MutableMetadataDecode(GroupMutableMetadataError),
GroupMetadataDecode(GroupMetadataError),
TlsCodec(Error),
InvalidInboxId(InboxIdError),
UnknownMembershipPolicy(Option<i32>),
ConversationTypePayloadLength(usize),
DmMembersSelfReference(String),
GroupMembershipEntryUnknownVersion,
InvalidFailedInstallationLength(usize),
GroupMembershipNonInsertBootstrapMutation,
GroupMembershipDuplicateInbox(String),
InvalidDisappearingTimestamp {
field: &'static str,
value: String,
reason: String,
},
InvalidCommitLogSignerHex {
reason: String,
},
InvalidCommitLogSignerLength {
expected: usize,
actual: usize,
},
}Expand description
Errors produced by the synthesis functions in this module.
Variants§
MissingPolicyField(&'static str)
A required PolicySet field was None. Both production presets
populate every field, so this only fires on corrupt input.
UnknownMetadataField(String)
update_metadata_policy referenced a metadata field we don’t
recognize. Silently dropping it would lose permission
enforcement, so synthesis fails fast.
NonConstrainedAdminPolicy(Option<i32>)
add_admin_policy/remove_admin_policy wasn’t admin- or
super-admin-gated; the constrained-component MetadataPolicy
shape can’t represent it.
UpdatePermissionsNotSuperAdmin(Option<i32>)
update_permissions_policy must be AllowIfSuperAdmin —
COMPONENT_REGISTRY is hardcoded super-admin-only on the
receiver, so any other value would silently disagree.
Registry(ComponentRegistryError)
MissingMutableMetadataExtension
MissingGroupMembershipExtension
GroupMembershipDecode(DecodeError)
GroupPermissionsDecode(DecodeError)
Kept distinct from GroupMembershipDecode so incident-response
greps land on the right extension type.
MutableMetadataDecode(GroupMutableMetadataError)
GroupMetadataDecode(GroupMetadataError)
TlsCodec(Error)
InvalidInboxId(InboxIdError)
UnknownMembershipPolicy(Option<i32>)
A GROUP_MEMBERSHIP membership-policy variant we can’t translate
onto MetadataPolicyProto. Mirrors UnknownMetadataField —
silently collapsing to Deny would lose enforcement.
ConversationTypePayloadLength(usize)
DmMembersSelfReference(String)
Legacy GroupMetadata.dm_members had the same inbox in both slots.
TlsSet<InboxId> (the DM_MEMBERS wire encoding) dedupes by
value and would silently collapse this to one element, so we
fail loud instead of destroying information.
GroupMembershipEntryUnknownVersion
GroupMembershipEntry envelope decoded but the version oneof
was unset (or set to a variant this build doesn’t recognize).
Treated as a hard decode failure rather than a silent skip.
InvalidFailedInstallationLength(usize)
Legacy GroupMembership.failed_installations carried an entry
whose length isn’t 32 bytes (the Ed25519 installation-key size).
Either the legacy state is corrupt or the wire shape changed —
either way, fail loud rather than silently admit a malformed
installation ID into the validator’s allow-set.
GroupMembershipNonInsertBootstrapMutation
A bootstrap-time GROUP_MEMBERSHIP wire delta carried a
non-Insert mutation. Bootstrap is always “delta from empty,”
so anything but Insert means the sender is malformed.
GroupMembershipDuplicateInbox(String)
A bootstrap-time GROUP_MEMBERSHIP wire delta carried two
Insert mutations for the same inbox id. The wire shape is
TlsMapDelta which permits this in principle, but bootstrap
must be a deterministic snapshot — the duplicate would let the
sender’s queue order diverge from honest receivers.
InvalidDisappearingTimestamp
Legacy MessageDisappearFromNS / MessageDisappearInNS GMM
attribute didn’t parse as a base-10 string of an i64. The
legacy reader at MessageDisappearingSettings returns
MissingExtension for this case; bootstrap synthesis fails
loud instead so the migrated dict can’t silently drop a
configured value.
InvalidCommitLogSignerHex
Legacy CommitLogSigner GMM attribute wasn’t valid hex.
InvalidCommitLogSignerLength
Legacy CommitLogSigner decoded to the wrong number of bytes —
the AppData wire shape is the raw 32-byte Ed25519 private key.
Trait Implementations§
Source§impl Debug for MigrationError
impl Debug for MigrationError
Source§impl Display for MigrationError
impl Display for MigrationError
Source§impl Error for MigrationError
impl Error for MigrationError
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
use the Display impl or to_string()
Source§impl From<ComponentRegistryError> for MigrationError
impl From<ComponentRegistryError> for MigrationError
Source§fn from(source: ComponentRegistryError) -> Self
fn from(source: ComponentRegistryError) -> Self
Source§impl From<DecodeError> for MigrationError
impl From<DecodeError> for MigrationError
Source§fn from(source: DecodeError) -> Self
fn from(source: DecodeError) -> Self
Source§impl From<Error> for MigrationError
impl From<Error> for MigrationError
Source§impl From<GroupMetadataError> for MigrationError
impl From<GroupMetadataError> for MigrationError
Source§fn from(source: GroupMetadataError) -> Self
fn from(source: GroupMetadataError) -> Self
Source§impl From<GroupMutableMetadataError> for MigrationError
impl From<GroupMutableMetadataError> for MigrationError
Source§fn from(source: GroupMutableMetadataError) -> Self
fn from(source: GroupMutableMetadataError) -> Self
Source§impl From<InboxIdError> for MigrationError
impl From<InboxIdError> for MigrationError
Source§fn from(source: InboxIdError) -> Self
fn from(source: InboxIdError) -> Self
Auto Trait Implementations§
impl Freeze for MigrationError
impl !RefUnwindSafe for MigrationError
impl Send for MigrationError
impl Sync for MigrationError
impl Unpin for MigrationError
impl UnsafeUnpin for MigrationError
impl !UnwindSafe for MigrationError
Blanket Implementations§
§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT modifier for aggregate functions Read more§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL modifier for aggregate functions Read more§fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoSql for T
impl<T> IntoSql for T
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].