#[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: u8
Bump seed.
store: Pubkey
Store.
kind: u8
Position kind (the representation of PositionKind
).
padding_0: [u8; 13]
Padding.
owner: Pubkey
Owner.
market_token: Pubkey
The market token of the position market.
collateral_token: Pubkey
Collateral token.
state: PositionState
Position State.
Implementations§
Source§impl Position
impl Position
Sourcepub fn kind_unchecked(&self) -> Result<PositionKind, Error>
pub fn kind_unchecked(&self) -> Result<PositionKind, Error>
Get position kind.
Note that Uninitialized
kind will also be returned without error.
Sourcepub fn kind(&self) -> Result<PositionKind, Error>
pub fn kind(&self) -> Result<PositionKind, Error>
Get initialized position kind.
Sourcepub fn try_is_long(&self) -> Result<bool, Error>
pub fn try_is_long(&self) -> Result<bool, Error>
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<(), Error>
pub fn try_init( &mut self, kind: PositionKind, bump: u8, store: Pubkey, owner: &Pubkey, market_token: &Pubkey, collateral_token: &Pubkey, ) -> Result<(), Error>
Initialize the position state.
Returns error if
kind
isUnitialized
.- The kind of the position is not
Uninitialized
.
Sourcepub fn as_position<'a>(
&'a self,
market: &'a Market,
) -> Result<AsPosition<'a>, Error>
pub fn as_position<'a>( &'a self, market: &'a Market, ) -> Result<AsPosition<'a>, Error>
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<Position, Error>
fn try_deserialize(buf: &mut &[u8]) -> Result<Position, Error>
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§impl<'de> Deserialize<'de> for Position
impl<'de> Deserialize<'de> for Position
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Position, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Position, <__D as Deserializer<'de>>::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]
Source§impl Serialize for Position
impl Serialize for Position
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
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§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
§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>
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