Skip to main content

MapKey

Trait MapKey 

Source
pub trait MapKey<'input>: Sized {
    // Required method
    fn from_key(
        key: Cow<'input, str>,
        lex: &Lexer<'input>,
    ) -> Result<Self, Error>;
}
Expand description

Internal adapter from a decoded JSON key to the user’s key type.

Sealed by the limited set of impls we provide; users who need a custom key type should hand-write the FromJson impl for the map or wrap the key in a newtype.

Returns Result because not every adapter is total — &'input str keys can only borrow, so escaped keys reject with InvalidEscape.

Required Methods§

Source

fn from_key(key: Cow<'input, str>, lex: &Lexer<'input>) -> Result<Self, Error>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'input> MapKey<'input> for &'input str

Source§

fn from_key(key: Cow<'input, str>, lex: &Lexer<'input>) -> Result<Self, Error>

Borrowing &'input str keys cannot represent escape-bearing keys, since the decoded form lives in a fresh allocation outside the input. Reject those at runtime; callers that expect escapes should use Cow<'input, str> or String.

Source§

impl<'input> MapKey<'input> for Cow<'input, str>

Source§

fn from_key(key: Self, _lex: &Lexer<'input>) -> Result<Self, Error>

Source§

impl<'input> MapKey<'input> for String

Source§

fn from_key(key: Cow<'input, str>, _lex: &Lexer<'input>) -> Result<Self, Error>

Implementors§