Skip to main content

FeatureManagementError

Enum FeatureManagementError 

Source
#[repr(u32)]
pub enum FeatureManagementError {
Show 22 variants Unauthorized = 0, InvalidFeatureName = 1, FeatureNotFound = 2, SerializationError = 3, DeserializationError = 4, InvalidInstructionData = 5, InternalError = 6, DuplicateFeature = 7, InvalidStorageAccount = 8, AlreadyInitialized = 9, NotInitialized = 10, MaxFeatureCountExceeded = 11, TooManyNames = 12, NoPendingTransfer = 13, PendingTransferExists = 14, InvalidTransferTarget = 15, ScheduleInPast = 16, ScheduleTooFarOut = 17, RequestNotFound = 18, TooManyPendingRequests = 19, RequestAlreadyExists = 20, PendingStateTooLarge = 21,
}
Expand description

Errors that can be returned by the Feature Management Program

Stable from this commit forward. Discriminants surface as ProgramError::Custom(u32) over the wire, so reordering or renumbering silently shifts what external decoders see. Pre-launch this enum has been compacted to fill the gaps left by the dropped sticky/windowed variants; from now on, add new variants only at the tail with the next unused discriminant.

Variants§

§

Unauthorized = 0

Unauthorized access - signature verification failed

§

InvalidFeatureName = 1

Invalid feature name (empty or too long)

§

FeatureNotFound = 2

Feature not found

§

SerializationError = 3

Serialization error

§

DeserializationError = 4

Deserialization error

§

InvalidInstructionData = 5

Invalid instruction data

§

InternalError = 6

Internal error (e.g., mutex lock failure)

§

DuplicateFeature = 7

Duplicate feature in modification list

§

InvalidStorageAccount = 8

Invalid storage account (not the expected PDA)

§

AlreadyInitialized = 9

Storage account already initialized

§

NotInitialized = 10

Storage account not initialized

§

MaxFeatureCountExceeded = 11

Maximum feature count exceeded.

§

TooManyNames = 12

A single Enable instruction submitted more names than MAX_NAMES_PER_BATCH permits.

§

NoPendingTransfer = 13

AcceptAuthorityTransfer / CancelAuthorityTransfer invoked while no transfer is pending.

§

PendingTransferExists = 14

ProposeAuthorityTransfer invoked while a previous proposal is still outstanding. Cancel the existing proposal first.

§

InvalidTransferTarget = 15

ProposeAuthorityTransfer invoked with new_authority equal to the current authority. Distinct from Unauthorized — the signer IS the authority; the target of the transfer is degenerate.

§

ScheduleInPast = 16

ScheduleEnable invoked with a fire_at_ms at or before the current block time. A schedule must activate in the future; use Enable for immediate activation.

§

ScheduleTooFarOut = 17

ScheduleEnable invoked with a fire_at_ms more than MAX_SCHEDULE_HORIZON_MS past the current block time. Guards against fat-fingered far-future timestamps (e.g. seconds mistaken for millis).

§

RequestNotFound = 18

Cancel invoked with a request_id that has no pending entry — already fired, already cancelled, or never existed.

§

TooManyPendingRequests = 19

ScheduleEnable invoked while the pending set is already at MAX_PENDING_REQUESTS. Cancel or let existing schedules fire first.

§

RequestAlreadyExists = 20

ScheduleEnable invoked with a request_id that already has a pending entry.

§

PendingStateTooLarge = 21

ScheduleEnable whose new pending entry would push the serialized FeaturesState over MAX_FEATURES_STATE_SIZE. The byte budget — not MAX_PENDING_REQUESTS — is the binding cap once requests carry non-trivial batches, so this is surfaced explicitly rather than as a bare SerializationError at save time.

Trait Implementations§

Source§

impl Clone for FeatureManagementError

Source§

fn clone(&self) -> FeatureManagementError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FeatureManagementError

Source§

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

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

impl Eq for FeatureManagementError

Source§

impl From<FeatureManagementError> for ProgramError

Source§

fn from(e: FeatureManagementError) -> Self

Converts to this type from the input type.
Source§

impl From<FeatureManagementError> for InstructionError

Source§

fn from(e: FeatureManagementError) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for FeatureManagementError

Source§

fn eq(&self, other: &FeatureManagementError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PrintProgramError for FeatureManagementError

Source§

fn print<E>(&self)

Source§

impl StructuralPartialEq for FeatureManagementError

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.