pub struct KeyValues(/* private fields */);Expand description
Pairs of text in the order they were entered, like headers or settings:
what the UI kit’s key_value field sends (meta[0][key],
meta[0][value], …). Rows without a key are skipped, and a key entered
twice keeps its last value.
It is stored (db::Json<KeyValues>) and serialized as a list of pairs,
[["Origin", "Aceh"], ["Roast", "Medium"]], so the order holds (a JSON
object would lose it in PostgreSQL’s JSONB), and reads back from that,
or from an object; key_value("meta", "Meta", value=item.meta) shows
what was saved.
#[derive(serde::Deserialize)]
struct Settings {
#[serde(default)]
headers: KeyValues,
}
impl Validate for Settings {
fn rules(&self, v: &mut Validator) {
v.field("headers", &self.headers).max(20);
}
}
for (name, value) in form.headers.iter() {
println!("{name}: {value}");
}
assert_eq!(form.headers.get("Accept"), None);Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for KeyValues
impl<'de> Deserialize<'de> for KeyValues
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
Deserialize this value from the given Serde deserializer. Read more
impl Eq for KeyValues
Source§impl FieldValue for KeyValues
impl FieldValue for KeyValues
impl StructuralPartialEq for KeyValues
Auto Trait Implementations§
impl Freeze for KeyValues
impl RefUnwindSafe for KeyValues
impl Send for KeyValues
impl Sync for KeyValues
impl Unpin for KeyValues
impl UnsafeUnpin for KeyValues
impl UnwindSafe for KeyValues
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more