pub struct MessageView<'a> { /* private fields */ }Expand description
A zero-copy view over an encoded ProtoCache message.
Implementations§
Source§impl<'a> MessageView<'a>
impl<'a> MessageView<'a>
Sourcepub fn new(words: &'a [u32]) -> Option<Self>
pub fn new(words: &'a [u32]) -> Option<Self>
Parses a message header from words.
The view may borrow a larger enclosing slice; call Self::detect when
the exact encoded extent is needed.
Examples found in repository?
examples/basic.rs (line 9)
3fn main() {
4 let mut buffer = Buffer::new();
5 let name = serialize_str("Ada", &mut buffer).expect("name is encodable");
6 let mut fields = [serialize_scalar(42_i32), name];
7 serialize_message(&mut fields, &mut buffer).expect("message is encodable");
8
9 let view = MessageView::new(buffer.view()).expect("valid ProtoCache message");
10 let id = view.scalar::<i32>(0).expect("id field");
11 let name = view
12 .string(1)
13 .and_then(|value| value.as_str())
14 .expect("UTF-8 name field");
15
16 println!("id={id}, name={name}");
17}Sourcepub fn from_words(words: &'a [u32]) -> Option<Self>
pub fn from_words(words: &'a [u32]) -> Option<Self>
Alias for Self::new used by generated bindings.
Sourcepub fn raw_words(self) -> &'a [u32]
pub fn raw_words(self) -> &'a [u32]
Returns the minimum message header/body slice retained by this view.
Sourcepub fn detect_len(words: &'a [u32]) -> Option<usize>
pub fn detect_len(words: &'a [u32]) -> Option<usize>
Detects the complete encoded message length, including referenced data.
Sourcepub fn detect(words: &'a [u32]) -> Option<&'a [u32]>
pub fn detect(words: &'a [u32]) -> Option<&'a [u32]>
Returns the exact encoded slice occupied by a valid message.
Sourcepub fn has_field(self, id: usize) -> bool
pub fn has_field(self, id: usize) -> bool
Returns whether the message contains the field with zero-based id.
Sourcepub fn field(self, id: usize) -> Option<FieldView<'a>>
pub fn field(self, id: usize) -> Option<FieldView<'a>>
Returns a raw field view for zero-based id.
pub fn expect_field(self, id: usize) -> FieldView<'a>
Sourcepub fn scalar<T: Scalar>(self, id: usize) -> Option<T>
pub fn scalar<T: Scalar>(self, id: usize) -> Option<T>
Examples found in repository?
examples/basic.rs (line 10)
3fn main() {
4 let mut buffer = Buffer::new();
5 let name = serialize_str("Ada", &mut buffer).expect("name is encodable");
6 let mut fields = [serialize_scalar(42_i32), name];
7 serialize_message(&mut fields, &mut buffer).expect("message is encodable");
8
9 let view = MessageView::new(buffer.view()).expect("valid ProtoCache message");
10 let id = view.scalar::<i32>(0).expect("id field");
11 let name = view
12 .string(1)
13 .and_then(|value| value.as_str())
14 .expect("UTF-8 name field");
15
16 println!("id={id}, name={name}");
17}Sourcepub fn string(self, id: usize) -> Option<StringView<'a>>
pub fn string(self, id: usize) -> Option<StringView<'a>>
Examples found in repository?
examples/basic.rs (line 12)
3fn main() {
4 let mut buffer = Buffer::new();
5 let name = serialize_str("Ada", &mut buffer).expect("name is encodable");
6 let mut fields = [serialize_scalar(42_i32), name];
7 serialize_message(&mut fields, &mut buffer).expect("message is encodable");
8
9 let view = MessageView::new(buffer.view()).expect("valid ProtoCache message");
10 let id = view.scalar::<i32>(0).expect("id field");
11 let name = view
12 .string(1)
13 .and_then(|value| value.as_str())
14 .expect("UTF-8 name field");
15
16 println!("id={id}, name={name}");
17}pub fn bytes(self, id: usize) -> Option<&'a [u8]>
pub fn bools(self, id: usize) -> Option<BoolArray<'a>>
pub fn message(self, id: usize) -> Option<MessageView<'a>>
pub fn array(self, id: usize) -> Option<ArrayView<'a>>
pub fn map(self, id: usize) -> Option<MapView<'a>>
Trait Implementations§
Source§impl<'a> Clone for MessageView<'a>
impl<'a> Clone for MessageView<'a>
Source§fn clone(&self) -> MessageView<'a>
fn clone(&self) -> MessageView<'a>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<'a> Copy for MessageView<'a>
Source§impl<'a> Debug for MessageView<'a>
impl<'a> Debug for MessageView<'a>
Source§impl<'a> FieldDecode<'a> for MessageView<'a>
impl<'a> FieldDecode<'a> for MessageView<'a>
Auto Trait Implementations§
impl<'a> Freeze for MessageView<'a>
impl<'a> RefUnwindSafe for MessageView<'a>
impl<'a> Send for MessageView<'a>
impl<'a> Sync for MessageView<'a>
impl<'a> Unpin for MessageView<'a>
impl<'a> UnsafeUnpin for MessageView<'a>
impl<'a> UnwindSafe for MessageView<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more