Trait Serialization

Source
pub trait Serialization {
    // Required methods
    fn append(&mut self, bytes: &[u8]) -> &Self;
    fn write_length_encoded(
        &mut self,
        value: &[u8],
        encode_value: bool,
    ) -> &Self;
    fn write_field_and_value(
        &mut self,
        field: FieldInstance,
        value: &[u8],
        is_unl_modify_workaround: bool,
    ) -> &Self;
}

Required Methods§

Source

fn append(&mut self, bytes: &[u8]) -> &Self

Write given bytes to this BinarySerializer.

§Examples
§Basic usage
use xrpl::core::binarycodec::BinarySerializer;
use xrpl::core::binarycodec::Serialization;

let mut test_bytes: Vec<u8> = [0, 17, 34, 51, 68, 85, 102].to_vec();
let mut serializer: BinarySerializer = BinarySerializer::new();

serializer.append(&mut test_bytes.to_owned());
assert_eq!(test_bytes, serializer);
Source

fn write_length_encoded(&mut self, value: &[u8], encode_value: bool) -> &Self

Write a variable length encoded value to the BinarySerializer.

§Examples
§Basic usage
use xrpl::core::binarycodec::BinarySerializer;
use xrpl::core::binarycodec::Serialization;

let expected: Vec<u8> = [3, 0, 17, 34].to_vec();
let mut test_bytes: Vec<u8> = [0, 17, 34].to_vec();
let mut serializer: BinarySerializer = BinarySerializer::new();

serializer.write_length_encoded(&mut test_bytes, true);
assert_eq!(expected, serializer);
Source

fn write_field_and_value( &mut self, field: FieldInstance, value: &[u8], is_unl_modify_workaround: bool, ) -> &Self

Write field and value to the buffer.

§Examples
§Basic usage
use xrpl::core::binarycodec::BinarySerializer;
use xrpl::core::binarycodec::Serialization;
use xrpl::core::binarycodec::definitions::FieldInstance;
use xrpl::core::binarycodec::definitions::FieldInfo;
use xrpl::core::binarycodec::definitions::FieldHeader;

let field_header: FieldHeader = FieldHeader {
    type_code: -2,
    field_code: 0,
};

let field_info: FieldInfo = FieldInfo {
    nth: 0,
    is_vl_encoded: false,
    is_serialized: false,
    is_signing_field: false,
    r#type: "Unknown".to_string(),
};

let field_instance = FieldInstance::new(&field_info, "Generic", field_header);
let expected: Vec<u8> = [224, 0, 17, 34].to_vec();
let test_bytes: Vec<u8> = [0, 17, 34].to_vec();
let mut serializer: BinarySerializer = BinarySerializer::new();

serializer.write_field_and_value(field_instance, &test_bytes, false);
assert_eq!(expected, serializer);

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.

Implementors§