#[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::from_bytes(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::from_bytes(bytes.as_slice())?;
let rawarray = rawdoc.get_array("x")?;
assert_eq!(rawarray.get_bool(1)?, true);
Implementations
sourceimpl RawArray
impl RawArray
sourcepub fn to_raw_array_buf(&self) -> RawArrayBuf
pub fn to_raw_array_buf(&self) -> RawArrayBuf
Convert this borrowed RawArray
into an owned RawArrayBuf
.
This involves a traversal of the array to count the values.
sourcepub fn get(&self, index: usize) -> Result<Option<RawBsonRef<'_>>>
pub fn get(&self, index: usize) -> Result<Option<RawBsonRef<'_>>>
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<RawBinaryRef<'_>>
pub fn get_binary(&self, index: usize) -> ValueAccessResult<RawBinaryRef<'_>>
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_object_id(&self, index: usize) -> ValueAccessResult<ObjectId>
pub fn get_object_id(&self, index: usize) -> ValueAccessResult<ObjectId>
Gets the ObjectId at the given index or returns an error if the value at that index isn’t an ObjectId.
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_regex(&self, index: usize) -> ValueAccessResult<RawRegexRef<'_>>
pub fn get_regex(&self, index: usize) -> ValueAccessResult<RawRegexRef<'_>>
Gets a reference to the BSON regex at the given index or returns an error if the value at that index isn’t a regex.
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 AsRef<RawArray> for RawArrayBuf
impl AsRef<RawArray> for RawArrayBuf
sourceimpl Borrow<RawArray> for RawArrayBuf
impl Borrow<RawArray> for RawArrayBuf
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> From<&'a RawArray> for RawBsonRef<'a>
impl<'a> From<&'a RawArray> for RawBsonRef<'a>
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?
type Item = Result<RawBsonRef<'a>, Error>
type Item = Result<RawBsonRef<'a>, Error>
The type of the elements being iterated over.
sourcefn into_iter(self) -> RawArrayIter<'a>ⓘNotable traits for RawArrayIter<'a>impl<'a> Iterator for RawArrayIter<'a> type Item = Result<RawBsonRef<'a>>;
fn into_iter(self) -> RawArrayIter<'a>ⓘNotable traits for RawArrayIter<'a>impl<'a> Iterator for RawArrayIter<'a> type Item = Result<RawBsonRef<'a>>;
Creates an iterator from a value. Read more
sourceimpl ToOwned for RawArray
impl ToOwned for RawArray
type Owned = RawArrayBuf
type Owned = RawArrayBuf
The resulting type after obtaining ownership.
sourcefn to_owned(&self) -> Self::Owned
fn to_owned(&self) -> Self::Owned
Creates owned data from borrowed data, usually by cloning. Read more
1.63.0 · sourcefn clone_into(&self, target: &mut Self::Owned)
fn clone_into(&self, target: &mut Self::Owned)
Uses borrowed data to replace owned data, usually by cloning. Read more