Skip to main content

Address

Struct Address 

Source
pub struct Address(/* private fields */);
Expand description

A Solana address (public key): 32 bytes, transparent layout.

This is part of the Hopper runtime type surface. Backends convert to and from this type at system boundaries.

Implementations§

Source§

impl Address

Source

pub const fn new(bytes: [u8; 32]) -> Self

Construct from a raw byte array.

Source

pub const fn new_from_array(bytes: [u8; 32]) -> Self

Construct from a raw byte array (alias for compatibility).

Source

pub const fn to_bytes(&self) -> [u8; 32]

Return the underlying bytes by value.

Source

pub const fn as_array(&self) -> &[u8; 32]

Borrow the underlying byte array.

Source

pub const fn as_bytes(&self) -> &[u8; 32]

Borrow the underlying bytes.

Source§

impl Address

Source

pub fn as_upstream<T>(&self) -> &T

Zero-cost borrow as a reference to any #[repr(transparent)] 32-byte type that shares layout with [u8; 32].

This is the preferred way to pass a Hopper Address where an upstream reference is expected (e.g. &pinocchio::Address or &Pubkey).

§Safety

Safe because Address is #[repr(transparent)] over [u8; 32] and any upstream 32-byte address type shares this layout.

Source

pub fn from_upstream<T>(upstream: &T) -> &Address

Construct a Hopper Address reference from any #[repr(transparent)] 32-byte address type.

Trait Implementations§

Source§

impl AsMut<[u8]> for Address

Source§

fn as_mut(&mut self) -> &mut [u8]

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<[u8]> for Address

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<[u8; 32]> for Address

Source§

fn as_ref(&self) -> &[u8; 32]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for Address

Source§

fn clone(&self) -> Address

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 Address

Source§

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

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

impl Default for Address

Source§

fn default() -> Address

Returns the “default value” for a type. Read more
Source§

impl Display for Address

Source§

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

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

impl From<[u8; 32]> for Address

Source§

fn from(bytes: [u8; 32]) -> Self

Converts to this type from the input type.
Source§

impl From<Address> for [u8; 32]

Source§

fn from(addr: Address) -> [u8; 32]

Converts to this type from the input type.
Source§

impl From<Address> for Address

Source§

fn from(address: BackendAddress) -> Self

Converts to this type from the input type.
Source§

impl Hash for Address

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Address

Source§

fn cmp(&self, other: &Address) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Address

Source§

fn eq(&self, other: &Address) -> 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 PartialOrd for Address

Source§

fn partial_cmp(&self, other: &Address) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl TailCodec for Address

Source§

const MAX_ENCODED_LEN: usize = 32

Upper bound on the encoded size. Used by generated helpers to verify the account has enough room before invoking encode. Implementors should pick the smallest valid bound. Hopper uses this to pre-size reallocs.
Source§

fn encode(&self, out: &mut [u8]) -> Result<usize, ProgramError>

Serialize self into out. Returns the number of bytes written (always <= MAX_ENCODED_LEN). Fails with AccountDataTooSmall when out.len() < encoded_len.
Source§

fn decode(input: &[u8]) -> Result<(Self, usize), ProgramError>

Deserialize from input. Returns (value, bytes_consumed). Fails with InvalidAccountData on malformed encoding.
Source§

impl TryFrom<&[u8]> for Address

Source§

type Error = TryFromSliceError

The type returned in the event of a conversion error.
Source§

fn try_from(slice: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Zeroable for Address

Available on crate feature hopper-native-backend only.
Source§

fn zeroed() -> Self

Source§

impl Copy for Address

Source§

impl Eq for Address

Source§

impl Pod for Address

Available on crate feature hopper-native-backend only.
Source§

impl Pod for Address

Source§

impl StructuralPartialEq for Address

Source§

impl TransparentAddress for Address

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> CheckedBitPattern for T
where T: AnyBitPattern,

Source§

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.
Source§

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 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, 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.
Source§

impl<T> WireLayout for T
where T: ZeroCopy,

Source§

const WIRE_SIZE: usize = _

Size of the on-wire representation, in bytes.
Source§

impl<T> AnyBitPattern for T
where T: Pod,

Source§

impl<T> NoUninit for T
where T: Pod,

Source§

impl<T> TailElement for T

Source§

impl<T> ZeroCopy for T
where T: Pod + 'static + HopperZeroCopySealed,