@@ -37,8 +37,8 @@ use crate::{
3737use super :: { DeserializerHint , Error , Result } ;
3838use crate :: de:: serde:: MapDeserializer ;
3939
40- /// Deserializer mapping from raw bson to serde's data model .
41- pub ( crate ) struct Deserializer < ' de > {
40+ /// Deserializer for deserializing raw BSON bytes .
41+ pub struct RawDeserializer < ' de > {
4242 element : RawElement < ' de > ,
4343 options : DeserializerOptions ,
4444}
@@ -49,8 +49,10 @@ struct DeserializerOptions {
4949 human_readable : bool ,
5050}
5151
52- impl < ' de > Deserializer < ' de > {
53- pub ( crate ) fn new ( buf : & ' de [ u8 ] ) -> Result < Self > {
52+ impl < ' de > RawDeserializer < ' de > {
53+ /// Construct a `RawDeserializer` with the provided bytes. Returns an error if the basic
54+ /// structure of the bytes is invalid.
55+ pub fn new ( buf : & ' de [ u8 ] ) -> Result < Self > {
5456 Ok ( Self {
5557 element : RawElement :: toplevel ( buf) ?,
5658 options : DeserializerOptions {
@@ -199,7 +201,7 @@ impl<'de> Deserializer<'de> {
199201 }
200202}
201203
202- impl < ' de > serde:: de:: Deserializer < ' de > for Deserializer < ' de > {
204+ impl < ' de > serde:: de:: Deserializer < ' de > for RawDeserializer < ' de > {
203205 type Error = Error ;
204206
205207 #[ inline]
@@ -336,7 +338,7 @@ impl<'de> DocumentAccess<'de> {
336338 Ok ( ( ) )
337339 }
338340
339- fn deserializer ( self ) -> Result < Deserializer < ' de > > {
341+ fn deserializer ( self ) -> Result < RawDeserializer < ' de > > {
340342 let elem = match self . elem {
341343 Some ( e) => e,
342344 None => {
@@ -345,7 +347,7 @@ impl<'de> DocumentAccess<'de> {
345347 ) )
346348 }
347349 } ;
348- Ok ( Deserializer {
350+ Ok ( RawDeserializer {
349351 element : elem,
350352 options : self . options ,
351353 } )
@@ -374,7 +376,7 @@ impl<'de> serde::de::MapAccess<'de> for DocumentAccess<'de> {
374376 {
375377 match & self . elem {
376378 None => Err ( Error :: deserialization ( "too many values requested" ) ) ,
377- Some ( elem) => seed. deserialize ( Deserializer {
379+ Some ( elem) => seed. deserialize ( RawDeserializer {
378380 element : elem. clone ( ) ,
379381 options : self . options . clone ( ) ,
380382 } ) ,
@@ -396,7 +398,7 @@ impl<'de> serde::de::SeqAccess<'de> for DocumentAccess<'de> {
396398 match & self . elem {
397399 None => Ok ( None ) ,
398400 Some ( elem) => seed
399- . deserialize ( Deserializer {
401+ . deserialize ( RawDeserializer {
400402 element : elem. clone ( ) ,
401403 options : self . options . clone ( ) ,
402404 } )
0 commit comments