Skip to content

Commit 283ecb3

Browse files
RUST-1132 Implement DeserializeSeed for owned and borrowed raw documents (#433)
1 parent 6b3ee6a commit 283ecb3

File tree

8 files changed

+1033
-400
lines changed

8 files changed

+1033
-400
lines changed

src/extjson/models.rs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ use serde::{
55
Deserialize,
66
Serialize,
77
};
8+
use std::borrow::Cow;
89

9-
use crate::{extjson, oid, spec::BinarySubtype, Bson};
10+
use crate::{extjson, oid, raw::serde::CowStr, spec::BinarySubtype, Bson};
1011

1112
#[derive(Deserialize)]
1213
#[serde(deny_unknown_fields)]
@@ -370,3 +371,31 @@ impl Undefined {
370371
}
371372
}
372373
}
374+
375+
#[derive(Debug, Deserialize)]
376+
pub(crate) struct BorrowedRegexBody<'a> {
377+
#[serde(borrow)]
378+
pub(crate) pattern: Cow<'a, str>,
379+
380+
#[serde(borrow)]
381+
pub(crate) options: Cow<'a, str>,
382+
}
383+
384+
#[derive(Debug, Deserialize)]
385+
pub(crate) struct BorrowedBinaryBody<'a> {
386+
#[serde(borrow)]
387+
pub(crate) bytes: Cow<'a, [u8]>,
388+
389+
#[serde(rename = "subType")]
390+
pub(crate) subtype: u8,
391+
}
392+
393+
#[derive(Deserialize)]
394+
pub(crate) struct BorrowedDbPointerBody<'a> {
395+
#[serde(rename = "$ref")]
396+
#[serde(borrow)]
397+
pub(crate) ns: CowStr<'a>,
398+
399+
#[serde(rename = "$id")]
400+
pub(crate) id: oid::ObjectId,
401+
}

src/raw/bson.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::{
2424
};
2525

2626
use super::{
27-
serde::{OwnedOrBorrowedRawBson, OwnedOrBorrowedRawBsonVisitor},
27+
serde::{bson_visitor::OwnedOrBorrowedRawBsonVisitor, OwnedOrBorrowedRawBson},
2828
Error,
2929
Result,
3030
};

src/raw/bson_ref.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use serde_bytes::Bytes;
55

66
use super::{
77
bson::RawBson,
8-
serde::{OwnedOrBorrowedRawBson, OwnedOrBorrowedRawBsonVisitor},
8+
serde::{bson_visitor::OwnedOrBorrowedRawBsonVisitor, OwnedOrBorrowedRawBson},
99
Error,
1010
RawArray,
1111
RawDocument,

src/raw/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ mod document;
120120
mod document_buf;
121121
mod error;
122122
mod iter;
123-
mod serde;
123+
pub(crate) mod serde;
124124
#[cfg(test)]
125125
mod test;
126126

0 commit comments

Comments
 (0)