StringData

Struct StringData 

Source
pub struct StringData(/* private fields */);
Expand description

Text fields within the MQTT Control Packets described later are encoded as UTF-8 strings. UTF-8 RFC3629 is an efficient encoding of Unicode Unicode characters that optimizes the encoding of ASCII characters in support of text-based communications.

String Data is represented by a Two Byte Integer length which indicates the number of data bytes, followed by characters.

Thus, the length of String Data is limited to the range of 0 to 65,535 Bytes.

+-------------------+
| String Length     |
|                   |
+-------------------+
| String            |
|                   |
+-------------------+

The character data in a UTF-8 Encoded String MUST be well-formed UTF-8 as defined by the Unicode specification Unicode and restated in RFC 3629 RFC3629. In particular, the character data MUST NOT include encodings of code points between U+D800 and U+DFFF [MQTT-1.5.4-1].

If the Client or Server receives an MQTT Control Packet containing ill-formed UTF-8 it is a Malformed Packet.

A UTF-8 Encoded String MUST NOT include an encoding of the null character U+0000. [MQTT-1.5.4-2].

If a receiver (Server or Client) receives an MQTT Control Packet containing U+0000 it is a Malformed Packet.

The data SHOULD NOT include encodings of the Unicode Unicode code points listed below. If a receiver (Server or Client) receives an MQTT Control Packet containing any of them it MAY treat it as a Malformed Packet. These are the Disallowed Unicode code points.

  • U+0001..U+001F control characters
  • U+007F..U+009F control characters
  • Code points defined in the Unicode specification Unicode to be non-characters (for example U+0FFFF)

A UTF-8 encoded sequence 0xEF 0xBB 0xBF is always interpreted as U+FEFF (“ZERO WIDTH NO-BREAK SPACE”) wherever it appears in a string and MUST NOT be skipped over or stripped off by a packet receiver [MQTT-1.5.4-3].

Implementations§

Source§

impl StringData

Source

pub const fn new() -> Self

Create an empty string data.

Source

pub fn from(s: &str) -> Result<Self, StringError>

Convert string slice into string data.

§Errors

Returns error if string slice is too large.

Source

pub fn bytes(&self) -> usize

Get byte length in packet.

Source

pub fn is_empty(&self) -> bool

Returns true if string data is empty.

Source

pub fn clear(&mut self)

Clear string.

Trait Implementations§

Source§

impl AsRef<str> for StringData

Source§

fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for StringData

Source§

fn clone(&self) -> StringData

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StringData

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl DecodePacket for StringData

Source§

fn decode(ba: &mut ByteArray<'_>) -> Result<Self, DecodeError>

Decode byte array into a mqtt packet. Read more
Source§

impl Default for StringData

Source§

fn default() -> StringData

Returns the “default value” for a type. Read more
Source§

impl Display for StringData

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl EncodePacket for StringData

Source§

fn encode(&self, buf: &mut Vec<u8>) -> Result<usize, EncodeError>

Encode packets into byte array. Read more
Source§

impl PartialEq for StringData

Source§

fn eq(&self, other: &StringData) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for StringData

Source§

impl StructuralPartialEq for StringData

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V