pub struct SubscriptionOptionsBits {
pub reserved_bits: u8,
pub retain_handling: u8,
pub retain_as_published: u8,
pub no_local: u8,
pub qos: u8,
}Expand description
Subscription options using bebytes for bit field operations This demonstrates the hybrid approach for complex packet variable headers Bit fields are ordered from MSB to LSB (bits 7-0)
Fields§
§reserved_bits: u8Reserved bits (bits 7-6) - must be 0
retain_handling: u8Retain Handling (bits 5-4)
retain_as_published: u8Retain As Published flag (bit 3)
no_local: u8No Local flag (bit 2)
qos: u8QoS level (bits 1-0)
Implementations§
Source§impl SubscriptionOptionsBits
impl SubscriptionOptionsBits
pub fn new( reserved_bits: u8, retain_handling: u8, retain_as_published: u8, no_local: u8, qos: u8, ) -> Self
Sourcepub const fn supports_raw_pointer_encoding() -> bool
pub const fn supports_raw_pointer_encoding() -> bool
Check if this struct supports raw pointer encoding
Sourcepub const fn optimal_serialization_method() -> &'static str
pub const fn optimal_serialization_method() -> &'static str
Get the optimal serialization method for this struct Returns the method name as a static string for performance guidance
Sourcepub fn to_be_bytes_optimal(&self) -> Result<Bytes, BeBytesError>
pub fn to_be_bytes_optimal(&self) -> Result<Bytes, BeBytesError>
Automatically select the optimal serialization method (big-endian) This method chooses the best approach based on struct characteristics
Sourcepub fn to_le_bytes_optimal(&self) -> Result<Bytes, BeBytesError>
pub fn to_le_bytes_optimal(&self) -> Result<Bytes, BeBytesError>
Automatically select the optimal serialization method (little-endian) This method chooses the best approach based on struct characteristics
Sourcepub fn create_batch_buffer_be(capacity: usize) -> BytesMut
pub fn create_batch_buffer_be(capacity: usize) -> BytesMut
Create a pre-sized buffer for batch serialization (big-endian) This helps avoid repeated allocations when serializing multiple instances
Sourcepub fn create_batch_buffer_le(capacity: usize) -> BytesMut
pub fn create_batch_buffer_le(capacity: usize) -> BytesMut
Create a pre-sized buffer for batch serialization (little-endian) This helps avoid repeated allocations when serializing multiple instances
Sourcepub fn encode_be_to_reused(
&self,
buf: &mut BytesMut,
) -> Result<(), BeBytesError>
pub fn encode_be_to_reused( &self, buf: &mut BytesMut, ) -> Result<(), BeBytesError>
Encode to a reusable buffer with optimal method selection (big-endian) This method automatically chooses the best encoding approach for performance
Sourcepub fn encode_le_to_reused(
&self,
buf: &mut BytesMut,
) -> Result<(), BeBytesError>
pub fn encode_le_to_reused( &self, buf: &mut BytesMut, ) -> Result<(), BeBytesError>
Encode to a reusable buffer with optimal method selection (little-endian) This method automatically chooses the best encoding approach for performance
Source§impl SubscriptionOptionsBits
impl SubscriptionOptionsBits
Sourcepub fn from_options(options: &SubscriptionOptions) -> Self
pub fn from_options(options: &SubscriptionOptions) -> Self
Creates subscription options bits from high-level SubscriptionOptions
Bebytes handles bit field layout, Rust handles type safety and validation
Sourcepub fn to_options(&self) -> Result<SubscriptionOptions>
pub fn to_options(&self) -> Result<SubscriptionOptions>
Converts bebytes bit fields back to high-level SubscriptionOptions
Bebytes provides the bits, Rust handles validation and type conversion
§Errors
Returns an error if reserved bits are set, or if QoS or retain handling values are invalid
Trait Implementations§
Source§impl BeBytes for SubscriptionOptionsBits
§Performance Characteristics
- Expected improvement: 2.3f32x over Vec approach
- Allocation pattern: Single allocation with reuse potential
- Recommendation: Good: Use Bytes buffer methods for better performance
impl BeBytes for SubscriptionOptionsBits
§Performance Characteristics
- Expected improvement: 2.3f32x over Vec approach
- Allocation pattern: Single allocation with reuse potential
- Recommendation: Good: Use Bytes buffer methods for better performance
§Optimization Hint: Consider using to_be_bytes_buf() for better performance (2.3x improvement)
fn field_size() -> usize
Source§fn try_from_be_bytes(bytes: &[u8]) -> Result<(Self, usize), BeBytesError>
fn try_from_be_bytes(bytes: &[u8]) -> Result<(Self, usize), BeBytesError>
fn to_be_bytes(&self) -> Vec<u8> ⓘ
Source§fn to_be_bytes_buf(&self) -> Bytes
fn to_be_bytes_buf(&self) -> Bytes
Source§fn try_from_le_bytes(bytes: &[u8]) -> Result<(Self, usize), BeBytesError>
fn try_from_le_bytes(bytes: &[u8]) -> Result<(Self, usize), BeBytesError>
fn to_le_bytes(&self) -> Vec<u8> ⓘ
Source§fn to_le_bytes_buf(&self) -> Bytes
fn to_le_bytes_buf(&self) -> Bytes
Source§fn encode_be_to<B: BufMut>(&self, buf: &mut B) -> Result<(), BeBytesError>
fn encode_be_to<B: BufMut>(&self, buf: &mut B) -> Result<(), BeBytesError>
Source§fn encode_le_to<B: BufMut>(&self, buf: &mut B) -> Result<(), BeBytesError>
fn encode_le_to<B: BufMut>(&self, buf: &mut B) -> Result<(), BeBytesError>
Source§impl Clone for SubscriptionOptionsBits
impl Clone for SubscriptionOptionsBits
Source§fn clone(&self) -> SubscriptionOptionsBits
fn clone(&self) -> SubscriptionOptionsBits
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more