Skip to main content

typhoon_traits/account/
mod.rs

1#[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}