Struct anchor_lang::Ctor
source · [−]pub struct Ctor<'info> {
pub from: AccountInfo<'info>,
pub to: AccountInfo<'info>,
pub base: AccountInfo<'info>,
pub system_program: AccountInfo<'info>,
pub program: AccountInfo<'info>,
pub rent: Sysvar<'info, Rent>,
}
Expand description
The Ctor accounts that can be used to create any account within the program itself (instead of creating the account on the client).
This is used to create accounts at deterministic addresses, as a function of
nothing but a program ID–for example, to create state global program
structs and program IDL accounts. It’s currently used internally within
the Anchor #[program]
codegen.
Fields
from: AccountInfo<'info>
to: AccountInfo<'info>
base: AccountInfo<'info>
system_program: AccountInfo<'info>
program: AccountInfo<'info>
rent: Sysvar<'info, Rent>
Trait Implementations
sourceimpl<'info> Accounts<'info> for Ctor<'info>
impl<'info> Accounts<'info> for Ctor<'info>
sourcefn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>]
) -> Result<Self, ProgramError>
fn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>]
) -> Result<Self, ProgramError>
Returns the validated accounts struct. What constitutes “valid” is
program dependent. However, users of these types should never have to
worry about account substitution attacks. For example, if a program
expects a Mint
account from the SPL token program in a particular
field, then it should be impossible for this method to return Ok
if
any other account type is given–from the SPL token program or elsewhere. Read more
sourceimpl<'info> AccountsExit<'info> for Ctor<'info>
impl<'info> AccountsExit<'info> for Ctor<'info>
sourcefn exit(&self, program_id: &Pubkey) -> ProgramResult
fn exit(&self, program_id: &Pubkey) -> ProgramResult
program_id
is the currently executing program.
sourceimpl<'info> ToAccountInfos<'info> for Ctor<'info>
impl<'info> ToAccountInfos<'info> for Ctor<'info>
fn to_account_infos(&self) -> Vec<AccountInfo<'info>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
sourceimpl<'info> ToAccountMetas for Ctor<'info>
impl<'info> ToAccountMetas for Ctor<'info>
sourcefn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
fn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
is_signer
is given as an optional override for the signer meta field.
This covers the edge case when a program-derived-address needs to relay
a transaction from a client to another program but sign the transaction
before the relay. The client cannot mark the field as a signer, and so
we have to override the is_signer meta field given by the client. Read more
Auto Trait Implementations
impl<'info> !RefUnwindSafe for Ctor<'info>
impl<'info> !Send for Ctor<'info>
impl<'info> !Sync for Ctor<'info>
impl<'info> Unpin for Ctor<'info>
impl<'info> !UnwindSafe for Ctor<'info>
Blanket Implementations
impl<T> AbiExample for T
impl<T> AbiExample for T
default fn example() -> T
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more