pub trait Error: Sized {
// Required method
fn custom(msg: impl Display) -> Self;
// Provided methods
fn invalid_product_length<'de, T>(len: usize, expected: &T) -> Self
where T: ProductVisitor<'de> { ... }
fn missing_field<'de, T>(
field: usize,
field_name: Option<&str>,
prod: &T
) -> Self
where T: ProductVisitor<'de> { ... }
fn duplicate_field<'de, T>(
field: usize,
field_name: Option<&str>,
prod: &T
) -> Self
where T: ProductVisitor<'de> { ... }
fn unknown_field_name<'de, T>(field_name: &str, expected: &T) -> Self
where T: FieldNameVisitor<'de> { ... }
fn unknown_variant_tag<'de, T>(tag: u8, expected: &T) -> Self
where T: SumVisitor<'de> { ... }
fn unknown_variant_name<T>(name: &str, expected: &T) -> Self
where T: VariantVisitor { ... }
}