use super::JsonDecodeNumberModel;
use super::JsonRootKind;
use super::JsonValidatedAdmissionPolicy;
use super::JsonValidatedDecodeOptions;
#[must_use = "the builder must be used to configure decode options"]
#[derive(Debug, Clone, Default)]
pub struct JsonValidatedDecodeOptionsBuilder {
root_kind: Option<JsonRootKind>,
admission_policy: JsonValidatedAdmissionPolicy,
number_model: JsonDecodeNumberModel,
max_value_and_key_nodes: Option<usize>,
max_encoded_string_bytes: Option<usize>,
}
impl JsonValidatedDecodeOptionsBuilder {
pub fn admission_policy(mut self, policy: JsonValidatedAdmissionPolicy) -> Self {
self.admission_policy = policy;
self
}
pub fn root_kind(mut self, kind: JsonRootKind) -> Self {
self.root_kind = Some(kind);
self
}
pub fn number_model(mut self, model: JsonDecodeNumberModel) -> Self {
self.number_model = model;
self
}
pub fn max_value_and_key_nodes(mut self, maximum: usize) -> Self {
self.max_value_and_key_nodes = Some(maximum);
self
}
pub fn max_encoded_string_bytes(mut self, maximum: usize) -> Self {
self.max_encoded_string_bytes = Some(maximum);
self
}
#[must_use]
pub fn build(self) -> JsonValidatedDecodeOptions {
JsonValidatedDecodeOptions {
root_kind: self.root_kind,
admission_policy: self.admission_policy,
number_model: self.number_model,
max_value_and_key_nodes: self.max_value_and_key_nodes,
max_encoded_string_bytes: self.max_encoded_string_bytes,
}
}
}