Trait SolTopicEncode

Source
pub trait SolTopicEncode: Sealed {
    // Required methods
    fn topic_preimage(&self, buffer: &mut Vec<u8>);
    fn default_topic_preimage(buffer: &mut Vec<u8>);
    fn topic_preimage_size(&self) -> usize;
    fn default_topic_preimage_size() -> usize;

    // Provided method
    fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
       where H: Fn(&[u8], &mut [u8; 32]) { ... }
}
Expand description

Solidity ABI encode this type as a topic (i.e. an indexed event parameter).

§References

§Note

This trait is sealed and cannot be implemented for types outside ink_primitives.

Required Methods§

Source

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Encode this type as input bytes for the hasher, when this type is member of a complex topic type (e.g. a member of array or struct/tuple).

Source

fn default_topic_preimage(buffer: &mut Vec<u8>)

Self::topic_preimage equivalent for the default value representation of this type.

Source

fn topic_preimage_size(&self) -> usize

Size in bytes of the Self::topic_preimage encoding of this type.

Source

fn default_topic_preimage_size() -> usize

Self::topic_preimage_size equivalent for the default value representation of this type.

Provided Methods§

Source

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Solidity ABI encode the value as a topic (i.e. an indexed event parameter).

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl SolTopicEncode for &str

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for &mut str

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for Cow<'_, str>

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for bool

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for i8

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for i16

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for i32

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for i64

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for i128

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for u8

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for u16

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for u32

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for u64

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for u128

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for ()

Source§

fn encode_topic<H>(&self, _: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(_: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for Box<str>

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl SolTopicEncode for String

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl<T> SolTopicEncode for Cow<'_, [T]>

Source§

impl<T> SolTopicEncode for Cow<'_, T>
where T: Clone + SolTopicEncode,

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl<T: SolTopicEncode> SolTopicEncode for &[T]

Source§

impl<T: SolTopicEncode> SolTopicEncode for &mut [T]

Source§

impl<T: SolTopicEncode> SolTopicEncode for Option<T>

Source§

impl<T: SolTopicEncode> SolTopicEncode for &T

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl<T: SolTopicEncode> SolTopicEncode for &mut T

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl<T: SolTopicEncode> SolTopicEncode for Box<[T]>

Source§

impl<T: SolTopicEncode> SolTopicEncode for Box<T>

Source§

fn encode_topic<H>(&self, hasher: H) -> [u8; 32]
where H: Fn(&[u8], &mut [u8; 32]),

Source§

fn topic_preimage(&self, buffer: &mut Vec<u8>)

Source§

fn default_topic_preimage(buffer: &mut Vec<u8>)

Source§

fn topic_preimage_size(&self) -> usize

Source§

fn default_topic_preimage_size() -> usize

Source§

impl<T: SolTopicEncode> SolTopicEncode for Vec<T>

Source§

impl<T: SolTopicEncode, const N: usize> SolTopicEncode for [T; N]

Source§

impl<TupleElement0: SolTopicEncode> SolTopicEncode for (TupleElement0,)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode, TupleElement5: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode, TupleElement5: SolTopicEncode, TupleElement6: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode, TupleElement5: SolTopicEncode, TupleElement6: SolTopicEncode, TupleElement7: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode, TupleElement5: SolTopicEncode, TupleElement6: SolTopicEncode, TupleElement7: SolTopicEncode, TupleElement8: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode, TupleElement5: SolTopicEncode, TupleElement6: SolTopicEncode, TupleElement7: SolTopicEncode, TupleElement8: SolTopicEncode, TupleElement9: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode, TupleElement5: SolTopicEncode, TupleElement6: SolTopicEncode, TupleElement7: SolTopicEncode, TupleElement8: SolTopicEncode, TupleElement9: SolTopicEncode, TupleElement10: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10)

Source§

impl<TupleElement0: SolTopicEncode, TupleElement1: SolTopicEncode, TupleElement2: SolTopicEncode, TupleElement3: SolTopicEncode, TupleElement4: SolTopicEncode, TupleElement5: SolTopicEncode, TupleElement6: SolTopicEncode, TupleElement7: SolTopicEncode, TupleElement8: SolTopicEncode, TupleElement9: SolTopicEncode, TupleElement10: SolTopicEncode, TupleElement11: SolTopicEncode> SolTopicEncode for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11)

Implementors§

Source§

impl SolTopicEncode for U256

Source§

impl SolTopicEncode for ByteSlice<'_>

Source§

impl SolTopicEncode for DynBytes

Source§

impl SolTopicEncode for Address

Source§

impl<const N: usize> SolTopicEncode for FixedBytes<N>
where ByteCount<N>: SupportedFixedBytes,