#[repr(C)]pub struct Position {
pub bump: u8,
pub store: Pubkey,
pub kind: u8,
pub padding_0: [u8; 13],
pub owner: Pubkey,
pub market_token: Pubkey,
pub collateral_token: Pubkey,
pub state: PositionState,
/* private fields */
}Expand description
Position.
Fields§
§bump: u8Bump seed.
store: PubkeyStore.
kind: u8Position kind (the representation of PositionKind).
padding_0: [u8; 13]Padding.
owner: PubkeyOwner.
market_token: PubkeyThe market token of the position market.
collateral_token: PubkeyCollateral token.
state: PositionStatePosition State.
Implementations§
Source§impl Position
impl Position
Sourcepub fn kind_unchecked(&self) -> Result<PositionKind>
pub fn kind_unchecked(&self) -> Result<PositionKind>
Get position kind.
Note that Uninitialized kind will also be returned without error.
Sourcepub fn kind(&self) -> Result<PositionKind>
pub fn kind(&self) -> Result<PositionKind>
Get initialized position kind.
Sourcepub fn try_is_long(&self) -> Result<bool>
pub fn try_is_long(&self) -> Result<bool>
Returns whether the position side is long.
Sourcepub fn try_init(
&mut self,
kind: PositionKind,
bump: u8,
store: Pubkey,
owner: &Pubkey,
market_token: &Pubkey,
collateral_token: &Pubkey,
) -> Result<()>
pub fn try_init( &mut self, kind: PositionKind, bump: u8, store: Pubkey, owner: &Pubkey, market_token: &Pubkey, collateral_token: &Pubkey, ) -> Result<()>
Initialize the position state.
Returns error if
kindisUnitialized.- The kind of the position is not
Uninitialized.
Sourcepub fn as_position<'a>(&'a self, market: &'a Market) -> Result<AsPosition<'a>>
pub fn as_position<'a>(&'a self, market: &'a Market) -> Result<AsPosition<'a>>
Convert to a type that implements Position.
Trait Implementations§
Source§impl AccountDeserialize for Position
impl AccountDeserialize for Position
Source§fn try_deserialize(buf: &mut &[u8]) -> Result<Self>
fn try_deserialize(buf: &mut &[u8]) -> Result<Self>
Deserializes previously initialized account data. Should fail for all
uninitialized accounts, where the bytes are zeroed. Implementations
should be unique to a particular account type so that one can never
successfully deserialize the data of one account type into another.
For example, if the SPL token program were to implement this trait,
it should be impossible to deserialize a
Mint account into a token
Account.Source§fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self>
fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self>
Deserializes account data without checking the account discriminator.
This should only be used on account initialization, when the bytes of
the account are zeroed.
Source§impl<'de> Deserialize<'de> for Position
impl<'de> Deserialize<'de> for Position
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Discriminator for Position
impl Discriminator for Position
const DISCRIMINATOR: [u8; 8]
fn discriminator() -> [u8; 8]
impl Copy for Position
impl Pod for Position
impl ZeroCopy for Position
Auto Trait Implementations§
impl Freeze for Position
impl RefUnwindSafe for Position
impl Send for Position
impl Sync for Position
impl Unpin for Position
impl UnwindSafe for Position
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
Mutably borrows from an owned value. Read more
§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
§type Bits = T
type Bits = T
Self must have the same layout as the specified Bits except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern.§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
If this function returns true, then it must be valid to reinterpret
bits
as &Self.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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