Replace custom_encodable
with encodable
.
By default, `newtype_index!` types get a default `Encodable`/`Decodable` impl. You can opt out of this with `custom_encodable`. Opting out is the opposite to how Rust normally works with autogenerated (derived) impls. This commit inverts the behaviour, replacing `custom_encodable` with `encodable` which opts into the default `Encodable`/`Decodable` impl. Only 23 of the 59 `newtype_index!` occurrences need `encodable`. Even better, there were eight crates with a dependency on `rustc_serialize` just from unused default `Encodable`/`Decodable` impls. This commit removes that dependency from those eight crates.
This commit is contained in:
parent
cc4bb0de20
commit
3ef9d4d0ed
29 changed files with 27 additions and 28 deletions
|
@ -13,7 +13,6 @@ pub type StableCrateIdMap =
|
|||
indexmap::IndexMap<StableCrateId, CrateNum, BuildHasherDefault<Unhasher>>;
|
||||
|
||||
rustc_index::newtype_index! {
|
||||
#[custom_encodable]
|
||||
#[debug_format = "crate{}"]
|
||||
pub struct CrateNum {}
|
||||
}
|
||||
|
@ -213,7 +212,6 @@ rustc_index::newtype_index! {
|
|||
/// A DefIndex is an index into the hir-map for a crate, identifying a
|
||||
/// particular definition. It should really be considered an interned
|
||||
/// shorthand for a particular DefPath.
|
||||
#[custom_encodable] // (only encodable in metadata)
|
||||
#[debug_format = "DefIndex({})"]
|
||||
pub struct DefIndex {
|
||||
/// The crate root is always assigned index 0 by the AST Map code,
|
||||
|
@ -222,6 +220,7 @@ rustc_index::newtype_index! {
|
|||
}
|
||||
}
|
||||
|
||||
// njn: I don't understand these
|
||||
impl<E: Encoder> Encodable<E> for DefIndex {
|
||||
default fn encode(&self, _: &mut E) {
|
||||
panic!("cannot encode `DefIndex` with `{}`", std::any::type_name::<E>());
|
||||
|
|
|
@ -60,7 +60,6 @@ pub struct SyntaxContextData {
|
|||
|
||||
rustc_index::newtype_index! {
|
||||
/// A unique ID associated with a macro invocation and expansion.
|
||||
#[custom_encodable]
|
||||
pub struct ExpnIndex {}
|
||||
}
|
||||
|
||||
|
@ -80,7 +79,6 @@ impl fmt::Debug for ExpnId {
|
|||
|
||||
rustc_index::newtype_index! {
|
||||
/// A unique ID associated with a macro invocation and expansion.
|
||||
#[custom_encodable]
|
||||
#[no_ord_impl]
|
||||
#[debug_format = "expn{}"]
|
||||
pub struct LocalExpnId {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue