1
Fork 0

Rollup merge of #84466 - jyn514:prim-str, r=GuillaumeGomez

rustdoc: Remove `PrimitiveType::{to_url_str, as_str}`

These can easily be rewritten in terms of `as_sym`, and this avoids bugs where the two get out of sync.

I don't expect this to have a perf impact, but I'll start a perf run just in case.
This commit is contained in:
Yuki Okushi 2021-06-05 06:13:30 +09:00 committed by GitHub
commit 74c744e54a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 45 deletions

View file

@ -1767,37 +1767,6 @@ impl PrimitiveType {
} }
} }
crate fn as_str(&self) -> &'static str {
use self::PrimitiveType::*;
match *self {
Isize => "isize",
I8 => "i8",
I16 => "i16",
I32 => "i32",
I64 => "i64",
I128 => "i128",
Usize => "usize",
U8 => "u8",
U16 => "u16",
U32 => "u32",
U64 => "u64",
U128 => "u128",
F32 => "f32",
F64 => "f64",
Str => "str",
Bool => "bool",
Char => "char",
Array => "array",
Slice => "slice",
Tuple => "tuple",
Unit => "unit",
RawPointer => "pointer",
Reference => "reference",
Fn => "fn",
Never => "never",
}
}
crate fn impls(&self, tcx: TyCtxt<'_>) -> &'static ArrayVec<DefId, 4> { crate fn impls(&self, tcx: TyCtxt<'_>) -> &'static ArrayVec<DefId, 4> {
Self::all_impls(tcx).get(self).expect("missing impl for primitive type") Self::all_impls(tcx).get(self).expect("missing impl for primitive type")
} }
@ -1860,10 +1829,6 @@ impl PrimitiveType {
}) })
} }
crate fn to_url_str(&self) -> &'static str {
self.as_str()
}
crate fn as_sym(&self) -> Symbol { crate fn as_sym(&self) -> Symbol {
use PrimitiveType::*; use PrimitiveType::*;
match self { match self {

View file

@ -574,7 +574,7 @@ fn primitive_link(
f, f,
"<a class=\"primitive\" href=\"{}primitive.{}.html\">", "<a class=\"primitive\" href=\"{}primitive.{}.html\">",
"../".repeat(len), "../".repeat(len),
prim.to_url_str() prim.as_sym()
)?; )?;
needs_termination = true; needs_termination = true;
} }
@ -603,7 +603,7 @@ fn primitive_link(
f, f,
"<a class=\"primitive\" href=\"{}/primitive.{}.html\">", "<a class=\"primitive\" href=\"{}/primitive.{}.html\">",
loc.join("/"), loc.join("/"),
prim.to_url_str() prim.as_sym()
)?; )?;
needs_termination = true; needs_termination = true;
} }
@ -677,7 +677,7 @@ fn fmt_type<'cx>(
fmt::Display::fmt(&tybounds(param_names, cx), f) fmt::Display::fmt(&tybounds(param_names, cx), f)
} }
clean::Infer => write!(f, "_"), clean::Infer => write!(f, "_"),
clean::Primitive(prim) => primitive_link(f, prim, prim.as_str(), cx), clean::Primitive(prim) => primitive_link(f, prim, &*prim.as_sym().as_str(), cx),
clean::BareFunction(ref decl) => { clean::BareFunction(ref decl) => {
if f.alternate() { if f.alternate() {
write!( write!(

View file

@ -379,7 +379,7 @@ impl FromWithTcx<clean::Type> for Type {
.unwrap_or_default(), .unwrap_or_default(),
}, },
Generic(s) => Type::Generic(s.to_string()), Generic(s) => Type::Generic(s.to_string()),
Primitive(p) => Type::Primitive(p.as_str().to_string()), Primitive(p) => Type::Primitive(p.as_sym().to_string()),
BareFunction(f) => Type::FunctionPointer(Box::new((*f).into_tcx(tcx))), BareFunction(f) => Type::FunctionPointer(Box::new((*f).into_tcx(tcx))),
Tuple(t) => Type::Tuple(t.into_iter().map(|x| x.into_tcx(tcx)).collect()), Tuple(t) => Type::Tuple(t.into_iter().map(|x| x.into_tcx(tcx)).collect()),
Slice(t) => Type::Slice(Box::new((*t).into_tcx(tcx))), Slice(t) => Type::Slice(Box::new((*t).into_tcx(tcx))),

View file

@ -91,10 +91,10 @@ impl Res {
} }
} }
fn name(self, tcx: TyCtxt<'_>) -> String { fn name(self, tcx: TyCtxt<'_>) -> Symbol {
match self { match self {
Res::Def(_, id) => tcx.item_name(id).to_string(), Res::Def(_, id) => tcx.item_name(id),
Res::Primitive(prim) => prim.as_str().to_string(), Res::Primitive(prim) => prim.as_sym(),
} }
} }
@ -388,7 +388,7 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> {
ty::AssocKind::Const => "associatedconstant", ty::AssocKind::Const => "associatedconstant",
ty::AssocKind::Type => "associatedtype", ty::AssocKind::Type => "associatedtype",
}; };
let fragment = format!("{}#{}.{}", prim_ty.as_str(), out, item_name); let fragment = format!("{}#{}.{}", prim_ty.as_sym(), out, item_name);
(Res::Primitive(prim_ty), fragment, Some((kind.as_def_kind(), item.def_id))) (Res::Primitive(prim_ty), fragment, Some((kind.as_def_kind(), item.def_id)))
}) })
}) })
@ -481,7 +481,7 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> {
AnchorFailure::RustdocAnchorConflict(res), AnchorFailure::RustdocAnchorConflict(res),
)); ));
} }
return Ok((res, Some(ty.as_str().to_owned()))); return Ok((res, Some(ty.as_sym().to_string())));
} }
_ => return Ok((res, extra_fragment.clone())), _ => return Ok((res, extra_fragment.clone())),
} }
@ -1148,7 +1148,7 @@ impl LinkCollector<'_, '_> {
return None; return None;
} }
res = prim; res = prim;
fragment = Some(prim.name(self.cx.tcx)); fragment = Some(prim.name(self.cx.tcx).to_string());
} else { } else {
// `[char]` when a `char` module is in scope // `[char]` when a `char` module is in scope
let candidates = vec![res, prim]; let candidates = vec![res, prim];