}
#[inline]
- pub fn as_def_id(&self) -> DefId {
- DefId { krate: *self, index: CRATE_DEF_INDEX }
+ pub fn as_def_id(self) -> DefId {
+ DefId { krate: self, index: CRATE_DEF_INDEX }
}
}
// On below-64 bit systems we can simply use the derived `Hash` impl
#[cfg_attr(not(target_pointer_width = "64"), derive(Hash))]
#[repr(C)]
+#[rustc_pass_by_value]
// We guarantee field order. Note that the order is essential here, see below why.
pub struct DefId {
// cfg-ing the order of fields so that the `DefIndex` which is high entropy always ends up in
impl<D: Decoder> Decodable<D> for DefId {
default fn decode(d: &mut D) -> DefId {
- d.read_struct(|d| DefId {
- krate: d.read_struct_field("krate", Decodable::decode),
- index: d.read_struct_field("index", Decodable::decode),
- })
+ DefId { krate: Decodable::decode(d), index: Decodable::decode(d) }
}
}