Expand description
Cross-framework type interop for Hopper.
Hopper keeps its own Address and AccountView types because they
carry segment metadata, layout fingerprints, and borrow-tracking that
external types lack. This module provides From/Into conversions
so Hopper code can interoperate with the wider Solana ecosystem
without loss of type safety.
§Zero-cost reference casts
Both Hopper’s Address and the upstream types (pinocchio::Address,
solana_program::pubkey::Pubkey) are #[repr(transparent)] over
[u8; 32]. This means reference casts are valid and zero-cost:
let hopper_addr: &Address = Address::from_ref(upstream_addr);
let upstream_ref: &[u8; 32] = hopper_addr.as_array();§By-value conversions
From/Into impls are provided automatically via the active backend.
When legacy-pinocchio-compat is enabled, From<pinocchio::Address> and
From<Address> for pinocchio::Address are available. When
solana-program-backend is enabled, the same exists for Pubkey.
§Backend-agnostic conversions
Regardless of backend, Hopper Address always converts to/from
[u8; 32], making it trivially interoperable with any type that
also wraps 32 bytes.
Traits§
- Transparent
Address - Marker trait for types that are
#[repr(transparent)]over[u8; 32].