Struct bson::raw::RawArray

source ·
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§

source§

impl RawArray

source

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.

source

pub fn get(&self, index: usize) -> Result<Option<RawBsonRef<'_>>>

Gets a reference to the value at the given index.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

pub fn as_bytes(&self) -> &[u8]

Gets a reference to the raw bytes of the RawArray.

source

pub fn is_empty(&self) -> bool

Whether this array contains any elements or not.

Trait Implementations§

source§

impl AsRef<RawArray> for RawArrayBuf

source§

fn as_ref(&self) -> &RawArray

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

impl Borrow<RawArray> for RawArrayBuf

source§

fn borrow(&self) -> &RawArray

Immutably borrows from an owned value. Read more
source§

impl Debug for RawArray

source§

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

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

impl<'de: 'a, 'a> Deserialize<'de> for &'a RawArray

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<'a> From<&'a RawArray> for Cow<'a, RawArray>

source§

fn from(rdr: &'a RawArray) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a RawArray> for RawBsonRef<'a>

source§

fn from(a: &'a RawArray) -> Self

Converts to this type from the input type.
source§

impl<'a> IntoIterator for &'a RawArray

§

type IntoIter = RawArrayIter<'a>

Which kind of iterator are we turning this into?
§

type Item = Result<RawBsonRef<'a>, Error>

The type of the elements being iterated over.
source§

fn into_iter(self) -> RawArrayIter<'a>

Creates an iterator from a value. Read more
source§

impl PartialEq for RawArray

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> Serialize for &'a RawArray

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl ToOwned for RawArray

§

type Owned = RawArrayBuf

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> Self::Owned

Creates owned data from borrowed data, usually by cloning. Read more
1.63.0 · source§

fn clone_into(&self, target: &mut Self::Owned)

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

impl TryFrom<&RawArray> for Vec<Bson>

§

type Error = Error

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

fn try_from(arr: &RawArray) -> Result<Vec<Bson>>

Performs the conversion.
source§

impl StructuralPartialEq for RawArray

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> Pipe for T
where T: ?Sized,

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.