RawArray

Struct 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::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§

Source§

impl RawArray

Source

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

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<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.

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_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.

Trait Implementations§

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> IntoIterator for &'a RawArray

Source§

type IntoIter = RawArrayIter<'a>

Which kind of iterator are we turning this into?
Source§

type Item = Result<RawBson<'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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

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 TryFrom<&RawArray> for Vec<Bson>

Source§

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