typhoon_traits/account/
mod.rs1#[cfg(feature = "bytemuck")]
2mod bytemuck;
3mod wincode;
4
5#[cfg(feature = "bytemuck")]
6pub use bytemuck::*;
7pub use wincode::*;
8use {::wincode::io::Writer, solana_program_error::ProgramError};
9
10pub trait Accessor<'a, T> {
11 type Data: 'a;
12
13 fn access(data: &'a [u8]) -> Result<Self::Data, ProgramError>;
14
15 fn read(data: &mut &'a [u8]) -> Result<Self::Data, ProgramError>;
16}
17
18pub trait MutAccessor<'a, T> {
19 type Data: 'a;
20
21 fn access_mut(data: &'a mut [u8]) -> Result<Self::Data, ProgramError>;
22}
23
24pub trait Write<T> {
25 fn size(data: &T) -> Result<usize, ProgramError>;
26 fn write_into(writer: impl Writer, data: &T) -> Result<(), ProgramError>;
27}
28
29pub trait DataStrategy {
30 type Strategy;
31}