Skip to content

Commit b698317

Browse files
committed
use smallvec for small # errors
1 parent 0fc9616 commit b698317

File tree

1 file changed

+4
-3
lines changed
  • src/serializers/type_serializers

1 file changed

+4
-3
lines changed

src/serializers/type_serializers/union.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use pyo3::intern;
22
use pyo3::prelude::*;
33
use pyo3::types::{PyDict, PyList, PyTuple};
4+
use smallvec::SmallVec;
45
use std::borrow::Cow;
56

67
use crate::build_tools::py_schema_err;
@@ -78,7 +79,7 @@ impl TypeSerializer for UnionSerializer {
7879
// try the serializers in left to right order with error_on fallback=true
7980
let mut new_extra = extra.clone();
8081
new_extra.check = SerCheck::Strict;
81-
let mut errors: Vec<PyErr> = Vec::new();
82+
let mut errors: SmallVec<[PyErr; 16]> = SmallVec::new();
8283

8384
for comb_serializer in &self.choices {
8485
match comb_serializer.to_python(value, include, exclude, &new_extra) {
@@ -113,7 +114,7 @@ impl TypeSerializer for UnionSerializer {
113114
fn json_key<'a>(&self, key: &'a Bound<'_, PyAny>, extra: &Extra) -> PyResult<Cow<'a, str>> {
114115
let mut new_extra = extra.clone();
115116
new_extra.check = SerCheck::Strict;
116-
let mut errors: Vec<PyErr> = Vec::new();
117+
let mut errors: SmallVec<[PyErr; 16]> = SmallVec::new();
117118

118119
for comb_serializer in &self.choices {
119120
match comb_serializer.json_key(key, &new_extra) {
@@ -156,7 +157,7 @@ impl TypeSerializer for UnionSerializer {
156157
let py = value.py();
157158
let mut new_extra = extra.clone();
158159
new_extra.check = SerCheck::Strict;
159-
let mut errors: Vec<PyErr> = Vec::new();
160+
let mut errors: SmallVec<[PyErr; 16]> = SmallVec::new();
160161

161162
for comb_serializer in &self.choices {
162163
match comb_serializer.to_python(value, include, exclude, &new_extra) {

0 commit comments

Comments
 (0)