pub struct BytesRules {
pub const: Option<Vec<u8>>,
pub len: Option<u64>,
pub min_len: Option<u64>,
pub max_len: Option<u64>,
pub pattern: Option<String>,
pub prefix: Option<Vec<u8>>,
pub suffix: Option<Vec<u8>>,
pub contains: Option<Vec<u8>>,
pub in: Vec<Vec<u8>>,
pub not_in: Vec<Vec<u8>>,
pub example: Vec<Vec<u8>>,
pub well_known: Option<WellKnown>,
}
Expand description
BytesRules describe the rules applied to bytes
values. These rules
may also be applied to the google.protobuf.BytesValue
Well-Known-Type.
Fields§
§const: Option<Vec<u8>>
const
requires the field value to exactly match the specified bytes
value. If the field value doesn’t match, an error message is generated.
message MyBytes {
// value must be "\x01\x02\x03\x04"
bytes value = 1 \[(buf.validate.field).bytes.const = "\x01\x02\x03\x04"\];
}
len: Option<u64>
len
requires the field value to have the specified length in bytes.
If the field value doesn’t match, an error message is generated.
message MyBytes {
// value length must be 4 bytes.
optional bytes value = 1 \[(buf.validate.field).bytes.len = 4\];
}
min_len: Option<u64>
min_len
requires the field value to have at least the specified minimum
length in bytes.
If the field value doesn’t meet the requirement, an error message is generated.
message MyBytes {
// value length must be at least 2 bytes.
optional bytes value = 1 \[(buf.validate.field).bytes.min_len = 2\];
}
max_len: Option<u64>
max_len
requires the field value to have at most the specified maximum
length in bytes.
If the field value exceeds the requirement, an error message is generated.
message MyBytes {
// value must be at most 6 bytes.
optional bytes value = 1 \[(buf.validate.field).bytes.max_len = 6\];
}
pattern: Option<String>
pattern
requires the field value to match the specified regular
expression (RE2 syntax).
The value of the field must be valid UTF-8 or validation will fail with a
runtime error.
If the field value doesn’t match the pattern, an error message is generated.
message MyBytes {
// value must match regex pattern "^\[a-zA-Z0-9\]+$".
optional bytes value = 1 \[(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9\]+$"];
}
prefix: Option<Vec<u8>>
prefix
requires the field value to have the specified bytes at the
beginning of the string.
If the field value doesn’t meet the requirement, an error message is generated.
message MyBytes {
// value does not have prefix \x01\x02
optional bytes value = 1 \[(buf.validate.field).bytes.prefix = "\x01\x02"\];
}
suffix: Option<Vec<u8>>
suffix
requires the field value to have the specified bytes at the end
of the string.
If the field value doesn’t meet the requirement, an error message is generated.
message MyBytes {
// value does not have suffix \x03\x04
optional bytes value = 1 \[(buf.validate.field).bytes.suffix = "\x03\x04"\];
}
contains: Option<Vec<u8>>
contains
requires the field value to have the specified bytes anywhere in
the string.
If the field value doesn’t meet the requirement, an error message is generated.
message MyBytes {
// value does not contain \x02\x03
optional bytes value = 1 \[(buf.validate.field).bytes.contains = "\x02\x03"\];
}
in: Vec<Vec<u8>>
in
requires the field value to be equal to one of the specified
values. If the field value doesn’t match any of the specified values, an
error message is generated.
message MyBytes {
// value must in \["\x01\x02", "\x02\x03", "\x03\x04"\]
optional bytes value = 1 \[(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}\];
}
not_in: Vec<Vec<u8>>
not_in
requires the field value to be not equal to any of the specified
values.
If the field value matches any of the specified values, an error message is
generated.
message MyBytes {
// value must not in \["\x01\x02", "\x02\x03", "\x03\x04"\]
optional bytes value = 1 \[(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}\];
}
example: Vec<Vec<u8>>
example
specifies values that the field may have. These values SHOULD
conform to other rules. example
values will not impact validation
but may be used as helpful guidance on how to populate the given field.
message MyBytes {
bytes value = 1 [
(buf.validate.field).bytes.example = "\x01\x02",
(buf.validate.field).bytes.example = "\x02\x03"
];
}
well_known: Option<WellKnown>
WellKnown rules provide advanced rules against common byte patterns
Implementations§
Source§impl BytesRules
impl BytesRules
Sourcepub fn const(&self) -> &[u8] ⓘ
pub fn const(&self) -> &[u8] ⓘ
Returns the value of const
, or the default value if const
is unset.
Sourcepub fn min_len(&self) -> u64
pub fn min_len(&self) -> u64
Returns the value of min_len
, or the default value if min_len
is unset.
Sourcepub fn max_len(&self) -> u64
pub fn max_len(&self) -> u64
Returns the value of max_len
, or the default value if max_len
is unset.
Sourcepub fn pattern(&self) -> &str
pub fn pattern(&self) -> &str
Returns the value of pattern
, or the default value if pattern
is unset.
Sourcepub fn prefix(&self) -> &[u8] ⓘ
pub fn prefix(&self) -> &[u8] ⓘ
Returns the value of prefix
, or the default value if prefix
is unset.
Sourcepub fn suffix(&self) -> &[u8] ⓘ
pub fn suffix(&self) -> &[u8] ⓘ
Returns the value of suffix
, or the default value if suffix
is unset.
Trait Implementations§
Source§impl Clone for BytesRules
impl Clone for BytesRules
Source§fn clone(&self) -> BytesRules
fn clone(&self) -> BytesRules
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for BytesRules
impl Debug for BytesRules
Source§impl Default for BytesRules
impl Default for BytesRules
Source§impl Message for BytesRules
impl Message for BytesRules
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.Source§impl PartialEq for BytesRules
impl PartialEq for BytesRules
impl StructuralPartialEq for BytesRules
Auto Trait Implementations§
impl Freeze for BytesRules
impl RefUnwindSafe for BytesRules
impl Send for BytesRules
impl Sync for BytesRules
impl Unpin for BytesRules
impl UnwindSafe for BytesRules
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request