pub trait Sysvar:
SysvarId
+ Default
+ Sized
+ Serialize
+ DeserializeOwned {
// Provided methods
fn size_of() -> usize { ... }
fn from_account_info(
account_info: &AccountInfo<'_>,
) -> Result<Self, ProgramError> { ... }
fn to_account_info(&self, account_info: &mut AccountInfo<'_>) -> Option<()> { ... }
fn get() -> Result<Self, ProgramError> { ... }
}
Expand description
A type that holds sysvar data.
Provided Methods§
Sourcefn from_account_info(
account_info: &AccountInfo<'_>,
) -> Result<Self, ProgramError>
fn from_account_info( account_info: &AccountInfo<'_>, ) -> Result<Self, ProgramError>
Deserializes the sysvar from its AccountInfo
.
§Errors
If account_info
does not have the same ID as the sysvar this function
returns ProgramError::InvalidArgument
.
Sourcefn to_account_info(&self, account_info: &mut AccountInfo<'_>) -> Option<()>
fn to_account_info(&self, account_info: &mut AccountInfo<'_>) -> Option<()>
Sourcefn get() -> Result<Self, ProgramError>
fn get() -> Result<Self, ProgramError>
Load the sysvar directly from the runtime.
This is the preferred way to load a sysvar. Calling this method does not incur any deserialization overhead, and does not require the sysvar account to be passed to the program.
Not all sysvars support this method. If not, it returns
ProgramError::UnsupportedSysvar
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.