#[repr(transparent)]pub struct RawArray { /* private fields */ }
Expand description
A slice of a BSON document containing a BSON array value (akin to std::str
). This can be
retrieved from a RawDocument
via RawDocument::get
.
This is an unsized type, meaning that it must always be used behind a pointer like &
.
Accessing elements within a RawArray
is similar to element access in crate::Document
,
but because the contents are parsed during iteration instead of at creation time, format errors
can happen at any time during use.
Iterating over a RawArray
yields either an error or a value that borrows from the
original document without making any additional allocations.
use bson::{doc, raw::RawDocument};
let doc = doc! {
"x": [1, true, "two", 5.5]
};
let bytes = bson::to_vec(&doc)?;
let rawdoc = RawDocument::new(bytes.as_slice())?;
let rawarray = rawdoc.get_array("x")?;
for v in rawarray {
println!("{:?}", v?);
}
Individual elements can be accessed using RawArray::get
or any of
the type-specific getters, such as [RawArray::get_object_id
] or
RawArray::get_str
. Note that accessing elements is an O(N) operation, as it
requires iterating through the array from the beginning to find the requested index.
use bson::{doc, raw::RawDocument};
let doc = doc! {
"x": [1, true, "two", 5.5]
};
let bytes = bson::to_vec(&doc)?;
let rawdoc = RawDocument::new(bytes.as_slice())?;
let rawarray = rawdoc.get_array("x")?;
assert_eq!(rawarray.get_bool(1)?, true);
Implementations
sourceimpl RawArray
impl RawArray
sourcepub fn get(&self, index: usize) -> Result<Option<RawBson<'_>>>
pub fn get(&self, index: usize) -> Result<Option<RawBson<'_>>>
Gets a reference to the value at the given index.
sourcepub fn get_f64(&self, index: usize) -> ValueAccessResult<f64>
pub fn get_f64(&self, index: usize) -> ValueAccessResult<f64>
Gets the BSON double at the given index or returns an error if the value at that index isn’t a double.
sourcepub fn get_str(&self, index: usize) -> ValueAccessResult<&str>
pub fn get_str(&self, index: usize) -> ValueAccessResult<&str>
Gets a reference to the string at the given index or returns an error if the value at that index isn’t a string.
sourcepub fn get_document(&self, index: usize) -> ValueAccessResult<&RawDocument>
pub fn get_document(&self, index: usize) -> ValueAccessResult<&RawDocument>
Gets a reference to the document at the given index or returns an error if the value at that index isn’t a document.
sourcepub fn get_array(&self, index: usize) -> ValueAccessResult<&RawArray>
pub fn get_array(&self, index: usize) -> ValueAccessResult<&RawArray>
Gets a reference to the array at the given index or returns an error if the value at that index isn’t a array.
sourcepub fn get_binary(&self, index: usize) -> ValueAccessResult<RawBinary<'_>>
pub fn get_binary(&self, index: usize) -> ValueAccessResult<RawBinary<'_>>
Gets a reference to the BSON binary value at the given index or returns an error if the value at that index isn’t a binary.
sourcepub fn get_bool(&self, index: usize) -> ValueAccessResult<bool>
pub fn get_bool(&self, index: usize) -> ValueAccessResult<bool>
Gets the boolean at the given index or returns an error if the value at that index isn’t a boolean.
sourcepub fn get_datetime(&self, index: usize) -> ValueAccessResult<DateTime>
pub fn get_datetime(&self, index: usize) -> ValueAccessResult<DateTime>
Gets the DateTime at the given index or returns an error if the value at that index isn’t a DateTime.
sourcepub fn get_timestamp(&self, index: usize) -> ValueAccessResult<Timestamp>
pub fn get_timestamp(&self, index: usize) -> ValueAccessResult<Timestamp>
Gets a reference to the BSON timestamp at the given index or returns an error if the value at that index isn’t a timestamp.
sourcepub fn get_i32(&self, index: usize) -> ValueAccessResult<i32>
pub fn get_i32(&self, index: usize) -> ValueAccessResult<i32>
Gets the BSON int32 at the given index or returns an error if the value at that index isn’t a 32-bit integer.
sourcepub fn get_i64(&self, index: usize) -> ValueAccessResult<i64>
pub fn get_i64(&self, index: usize) -> ValueAccessResult<i64>
Gets BSON int64 at the given index or returns an error if the value at that index isn’t a 64-bit integer.
Trait Implementations
sourceimpl<'de: 'a, 'a> Deserialize<'de> for &'a RawArray
impl<'de: 'a, 'a> Deserialize<'de> for &'a RawArray
sourcefn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<'a> IntoIterator for &'a RawArray
impl<'a> IntoIterator for &'a RawArray
type IntoIter = RawArrayIter<'a>
type IntoIter = RawArrayIter<'a>
Which kind of iterator are we turning this into?
sourcefn into_iter(self) -> RawArrayIter<'a>ⓘNotable traits for RawArrayIter<'a>impl<'a> Iterator for RawArrayIter<'a> type Item = Result<RawBson<'a>>;
fn into_iter(self) -> RawArrayIter<'a>ⓘNotable traits for RawArrayIter<'a>impl<'a> Iterator for RawArrayIter<'a> type Item = Result<RawBson<'a>>;
Creates an iterator from a value. Read more