borsh-0.2.0: Implementation of BORSH serialisation
Safe HaskellSafe-Inferred
LanguageHaskell2010

Codec.Borsh

Synopsis

Serialisation

class BorshSize a => ToBorsh a where Source #

Minimal complete definition

Nothing

Methods

encodeBorsh :: Encoder a Source #

Encoder to Borsh

NOTE: The default generic encoder uses the Borsh encoding for enums, and will therefore use constructor tag; see Struct for detailed discussion. Since the spec mandates the presence of that constructor tag, the generic encoder/decoder does not apply to types without constructors.

Instances

Instances details
ToBorsh Int16 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Int32 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Int64 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Int8 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Word16 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Word32 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Word64 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Word8 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh ByteString Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh ByteString Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Text Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Int128 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Word128 Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh () Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Bool Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Char Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Double Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh Float Source # 
Instance details

Defined in Codec.Borsh.Class

(IsProductType a xs, All BorshSize xs, All ToBorsh xs) => ToBorsh (Struct a) Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh a => ToBorsh (Set a) Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh a => ToBorsh (Maybe a) Source # 
Instance details

Defined in Codec.Borsh.Class

ToBorsh a => ToBorsh [a] Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder [a] Source #

(ToBorsh a, ToBorsh b) => ToBorsh (Either a b) Source # 
Instance details

Defined in Codec.Borsh.Class

(KnownNat n, ToBorsh a) => ToBorsh (FixedSizeArray n a) Source # 
Instance details

Defined in Codec.Borsh.Class

(ToBorsh k, ToBorsh a) => ToBorsh (Map k a) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (Map k a) Source #

(ToBorsh a, ToBorsh b) => ToBorsh (a, b) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b) Source #

(All BorshSize xs, All ToBorsh xs) => ToBorsh (NP I xs) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (NP I xs) Source #

(BorshSizeSum xss, All2 ToBorsh xss, All (SListI :: [Type] -> Constraint) xss) => ToBorsh (SOP I xss) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (SOP I xss) Source #

(ToBorsh a, ToBorsh b, ToBorsh c) => ToBorsh (a, b, c) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c) Source #

(ToBorsh a, ToBorsh b, ToBorsh c, ToBorsh d) => ToBorsh (a, b, c, d) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c, d) Source #

(ToBorsh a, ToBorsh b, ToBorsh c, ToBorsh d, ToBorsh e) => ToBorsh (a, b, c, d, e) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c, d, e) Source #

(ToBorsh a, ToBorsh b, ToBorsh c, ToBorsh d, ToBorsh e, ToBorsh f) => ToBorsh (a, b, c, d, e, f) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c, d, e, f) Source #

(ToBorsh a, ToBorsh b, ToBorsh c, ToBorsh d, ToBorsh e, ToBorsh f, ToBorsh g) => ToBorsh (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c, d, e, f, g) Source #

(ToBorsh a, ToBorsh b, ToBorsh c, ToBorsh d, ToBorsh e, ToBorsh f, ToBorsh g, ToBorsh h) => ToBorsh (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c, d, e, f, g, h) Source #

(ToBorsh a, ToBorsh b, ToBorsh c, ToBorsh d, ToBorsh e, ToBorsh f, ToBorsh g, ToBorsh h, ToBorsh i) => ToBorsh (a, b, c, d, e, f, g, h, i) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c, d, e, f, g, h, i) Source #

(ToBorsh a, ToBorsh b, ToBorsh c, ToBorsh d, ToBorsh e, ToBorsh f, ToBorsh g, ToBorsh h, ToBorsh i, ToBorsh j) => ToBorsh (a, b, c, d, e, f, g, h, i, j) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

encodeBorsh :: Encoder (a, b, c, d, e, f, g, h, i, j) Source #

newtype Encoder a Source #

Encoder

An encoder describes how to serialise a given value in BORSH format.

Constructors

Encoder 

Fields

Instances

Instances details
Contravariant Encoder Source # 
Instance details

Defined in Codec.Borsh.Encoding

Methods

contramap :: (a' -> a) -> Encoder a -> Encoder a' #

(>$) :: b -> Encoder b -> Encoder a #

Deserialisation

class BorshSize a => FromBorsh a where Source #

Minimal complete definition

Nothing

Methods

decodeBorsh :: Decoder s a Source #

Decode from Borsh

See encodeBorsh for discussion of the generic instance.

Instances

Instances details
FromBorsh Int16 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Int32 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Int64 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Int8 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Word16 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Word32 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Word64 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Word8 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh ByteString Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh ByteString Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Text Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Int128 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Word128 Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh () Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s () Source #

FromBorsh Bool Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Char Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Double Source # 
Instance details

Defined in Codec.Borsh.Class

FromBorsh Float Source # 
Instance details

Defined in Codec.Borsh.Class

(IsProductType a xs, All BorshSize xs, All FromBorsh xs) => FromBorsh (Struct a) Source # 
Instance details

Defined in Codec.Borsh.Class

(FromBorsh a, Ord a) => FromBorsh (Set a) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (Set a) Source #

FromBorsh a => FromBorsh (Maybe a) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (Maybe a) Source #

FromBorsh a => FromBorsh [a] Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s [a] Source #

(FromBorsh a, FromBorsh b) => FromBorsh (Either a b) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (Either a b) Source #

(FromBorsh a, KnownNat n) => FromBorsh (FixedSizeArray n a) Source # 
Instance details

Defined in Codec.Borsh.Class

(FromBorsh k, FromBorsh a, Ord k) => FromBorsh (Map k a) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (Map k a) Source #

(FromBorsh a, FromBorsh b) => FromBorsh (a, b) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b) Source #

(All BorshSize xs, All FromBorsh xs) => FromBorsh (NP I xs) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (NP I xs) Source #

(BorshSizeSum xss, All (SListI :: [Type] -> Constraint) xss, All2 FromBorsh xss) => FromBorsh (SOP I xss) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (SOP I xss) Source #

(FromBorsh a, FromBorsh b, FromBorsh c) => FromBorsh (a, b, c) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c) Source #

(FromBorsh a, FromBorsh b, FromBorsh c, FromBorsh d) => FromBorsh (a, b, c, d) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c, d) Source #

(FromBorsh a, FromBorsh b, FromBorsh c, FromBorsh d, FromBorsh e) => FromBorsh (a, b, c, d, e) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c, d, e) Source #

(FromBorsh a, FromBorsh b, FromBorsh c, FromBorsh d, FromBorsh e, FromBorsh f) => FromBorsh (a, b, c, d, e, f) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c, d, e, f) Source #

(FromBorsh a, FromBorsh b, FromBorsh c, FromBorsh d, FromBorsh e, FromBorsh f, FromBorsh g) => FromBorsh (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c, d, e, f, g) Source #

(FromBorsh a, FromBorsh b, FromBorsh c, FromBorsh d, FromBorsh e, FromBorsh f, FromBorsh g, FromBorsh h) => FromBorsh (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c, d, e, f, g, h) Source #

(FromBorsh a, FromBorsh b, FromBorsh c, FromBorsh d, FromBorsh e, FromBorsh f, FromBorsh g, FromBorsh h, FromBorsh i) => FromBorsh (a, b, c, d, e, f, g, h, i) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c, d, e, f, g, h, i) Source #

(FromBorsh a, FromBorsh b, FromBorsh c, FromBorsh d, FromBorsh e, FromBorsh f, FromBorsh g, FromBorsh h, FromBorsh i, FromBorsh j) => FromBorsh (a, b, c, d, e, f, g, h, i, j) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

decodeBorsh :: Decoder s (a, b, c, d, e, f, g, h, i, j) Source #

data Decoder s a Source #

Decoder

A decoder describes how to match against a single chunk of the input.

For decoders for primitive types, use FromBorsh instances.

Instances

Instances details
MonadFail (Decoder s) Source # 
Instance details

Defined in Codec.Borsh.Incremental.Decoder

Methods

fail :: String -> Decoder s a #

Applicative (Decoder s) Source # 
Instance details

Defined in Codec.Borsh.Incremental.Decoder

Methods

pure :: a -> Decoder s a #

(<*>) :: Decoder s (a -> b) -> Decoder s a -> Decoder s b #

liftA2 :: (a -> b -> c) -> Decoder s a -> Decoder s b -> Decoder s c #

(*>) :: Decoder s a -> Decoder s b -> Decoder s b #

(<*) :: Decoder s a -> Decoder s b -> Decoder s a #

Functor (Decoder s) Source # 
Instance details

Defined in Codec.Borsh.Incremental.Decoder

Methods

fmap :: (a -> b) -> Decoder s a -> Decoder s b #

(<$) :: a -> Decoder s b -> Decoder s a #

Monad (Decoder s) Source # 
Instance details

Defined in Codec.Borsh.Incremental.Decoder

Methods

(>>=) :: Decoder s a -> (a -> Decoder s b) -> Decoder s b #

(>>) :: Decoder s a -> Decoder s b -> Decoder s b #

return :: a -> Decoder s a #

data DeserialiseFailure Source #

Error type for deserialisation.

Constructors

DeserialiseFailure 

Fields

  • ByteOffset

    The position of the decoder when the failure occurred

  • String

    Message explaining the failure

Size of encodings

class BorshSize (a :: Type) where Source #

Minimal complete definition

Nothing

Associated Types

type StaticBorshSize a :: KnownSize Source #

type StaticBorshSize a = SumKnownSize (Code a)

Methods

borshSize :: Proxy a -> Size (StaticBorshSize a) Source #

Size of the Borsh encoding, if known ahead of time

See encodeBorsh for discussion of the generic instance.

default borshSize :: (StaticBorshSize a ~ SumKnownSize (Code a), BorshSizeSum (Code a)) => Proxy a -> Size (StaticBorshSize a) Source #

Instances

Instances details
BorshSize Int16 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Int16 :: KnownSize Source #

BorshSize Int32 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Int32 :: KnownSize Source #

BorshSize Int64 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Int64 :: KnownSize Source #

BorshSize Int8 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Int8 :: KnownSize Source #

BorshSize Word16 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Word16 :: KnownSize Source #

BorshSize Word32 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Word32 :: KnownSize Source #

BorshSize Word64 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Word64 :: KnownSize Source #

BorshSize Word8 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Word8 :: KnownSize Source #

BorshSize ByteString Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize ByteString :: KnownSize Source #

BorshSize ByteString Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize ByteString :: KnownSize Source #

BorshSize Text Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Text :: KnownSize Source #

BorshSize Int128 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Int128 :: KnownSize Source #

BorshSize Word128 Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Word128 :: KnownSize Source #

BorshSize () Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize () :: KnownSize Source #

BorshSize Bool Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Bool :: KnownSize Source #

BorshSize Char Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Char :: KnownSize Source #

BorshSize Double Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Double :: KnownSize Source #

BorshSize Float Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize Float :: KnownSize Source #

(IsProductType a xs, All BorshSize xs) => BorshSize (Struct a) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (Struct a) :: KnownSize Source #

BorshSize (Set a) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (Set a) :: KnownSize Source #

BorshSize (Maybe a) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (Maybe a) :: KnownSize Source #

BorshSize [a] Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize [a] :: KnownSize Source #

Methods

borshSize :: Proxy [a] -> Size (StaticBorshSize [a]) Source #

BorshSize (Either a b) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (Either a b) :: KnownSize Source #

(KnownNat n, BorshSize a) => BorshSize (FixedSizeArray n a) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (FixedSizeArray n a) :: KnownSize Source #

BorshSize (Map k a) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (Map k a) :: KnownSize Source #

Methods

borshSize :: Proxy (Map k a) -> Size (StaticBorshSize (Map k a)) Source #

(BorshSize a, BorshSize b) => BorshSize (a, b) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b) -> Size (StaticBorshSize (a, b)) Source #

All BorshSize xs => BorshSize (NP I xs) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (NP I xs) :: KnownSize Source #

Methods

borshSize :: Proxy (NP I xs) -> Size (StaticBorshSize (NP I xs)) Source #

BorshSizeSum xss => BorshSize (SOP I xss) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (SOP I xss) :: KnownSize Source #

Methods

borshSize :: Proxy (SOP I xss) -> Size (StaticBorshSize (SOP I xss)) Source #

(BorshSize a, BorshSize b, BorshSize c) => BorshSize (a, b, c) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c) -> Size (StaticBorshSize (a, b, c)) Source #

(BorshSize a, BorshSize b, BorshSize c, BorshSize d) => BorshSize (a, b, c, d) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c, d) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c, d) -> Size (StaticBorshSize (a, b, c, d)) Source #

(BorshSize a, BorshSize b, BorshSize c, BorshSize d, BorshSize e) => BorshSize (a, b, c, d, e) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c, d, e) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c, d, e) -> Size (StaticBorshSize (a, b, c, d, e)) Source #

(BorshSize a, BorshSize b, BorshSize c, BorshSize d, BorshSize e, BorshSize f) => BorshSize (a, b, c, d, e, f) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c, d, e, f) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c, d, e, f) -> Size (StaticBorshSize (a, b, c, d, e, f)) Source #

(BorshSize a, BorshSize b, BorshSize c, BorshSize d, BorshSize e, BorshSize f, BorshSize g) => BorshSize (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c, d, e, f, g) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c, d, e, f, g) -> Size (StaticBorshSize (a, b, c, d, e, f, g)) Source #

(BorshSize a, BorshSize b, BorshSize c, BorshSize d, BorshSize e, BorshSize f, BorshSize g, BorshSize h) => BorshSize (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c, d, e, f, g, h) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c, d, e, f, g, h) -> Size (StaticBorshSize (a, b, c, d, e, f, g, h)) Source #

(BorshSize a, BorshSize b, BorshSize c, BorshSize d, BorshSize e, BorshSize f, BorshSize g, BorshSize h, BorshSize i) => BorshSize (a, b, c, d, e, f, g, h, i) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c, d, e, f, g, h, i) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c, d, e, f, g, h, i) -> Size (StaticBorshSize (a, b, c, d, e, f, g, h, i)) Source #

(BorshSize a, BorshSize b, BorshSize c, BorshSize d, BorshSize e, BorshSize f, BorshSize g, BorshSize h, BorshSize i, BorshSize j) => BorshSize (a, b, c, d, e, f, g, h, i, j) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (a, b, c, d, e, f, g, h, i, j) :: KnownSize Source #

Methods

borshSize :: Proxy (a, b, c, d, e, f, g, h, i, j) -> Size (StaticBorshSize (a, b, c, d, e, f, g, h, i, j)) Source #

data Size (a :: KnownSize) where Source #

The statically known size of encodings of values of a particular type.

Instances

Instances details
Show (Size a) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

showsPrec :: Int -> Size a -> ShowS #

show :: Size a -> String #

showList :: [Size a] -> ShowS #

Eq (Size a) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

(==) :: Size a -> Size a -> Bool #

(/=) :: Size a -> Size a -> Bool #

class BorshSizeSum (xss :: [[Type]]) where Source #

Auxiliary class to BorshSize describing the conditions under which the size of the encoding of a value of a sum-type is known.

Methods

borshSizeSum :: Proxy xss -> Size (SumKnownSize xss) Source #

Instances

Instances details
BorshSizeSum ('[] :: [[Type]]) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

borshSizeSum :: Proxy '[] -> Size (SumKnownSize '[]) Source #

BorshSizeSum (xs ': (ys ': zss)) Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

borshSizeSum :: Proxy (xs ': (ys ': zss)) -> Size (SumKnownSize (xs ': (ys ': zss))) Source #

All BorshSize xs => BorshSizeSum '[xs] Source # 
Instance details

Defined in Codec.Borsh.Class

Methods

borshSizeSum :: Proxy '[xs] -> Size (SumKnownSize '[xs]) Source #

Deriving-via support

newtype Struct a Source #

Deriving-via support for structs

The Borsh spec https://borsh.io/ mandates that enums have a tag indicating the constructor, even when there is only a single constructor in the enum. In Rust this makes more sense than in Haskell, since in Rust enums and structs are introduced through different keywords. In Haskell, of course, the only difference between them is that a struct is an enum with a single constructor.

The default generic encoder en decoder you get in ToBorsh and FromBorsh will therefore add the tag, independent of the number of constructors. If you want the encoding of a struct, without the tag, you need to use deriving via:

data MyStruct = ..
  deriving (BorshSize, ToBorsh, FromBorsh) via Struct MyStruct

NOTE: Doing so may have consequences for forwards compatibility: if a tag is present, additional constructors can be added without invalidating the encoding of existing constructors.

Constructors

Struct 

Fields

Instances

Instances details
(IsProductType a xs, All BorshSize xs) => BorshSize (Struct a) Source # 
Instance details

Defined in Codec.Borsh.Class

Associated Types

type StaticBorshSize (Struct a) :: KnownSize Source #

(IsProductType a xs, All BorshSize xs, All FromBorsh xs) => FromBorsh (Struct a) Source # 
Instance details

Defined in Codec.Borsh.Class

(IsProductType a xs, All BorshSize xs, All ToBorsh xs) => ToBorsh (Struct a) Source # 
Instance details

Defined in Codec.Borsh.Class

type StaticBorshSize (Struct a) Source # 
Instance details

Defined in Codec.Borsh.Class