mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Optimize Symbol::integer by utilizing itoa in-place formatting
This commit is contained in:
parent
1547c076bf
commit
33ef4b963b
@ -4570,6 +4570,7 @@ name = "rustc_span"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"indexmap",
|
||||
"itoa",
|
||||
"md-5",
|
||||
"rustc_arena",
|
||||
"rustc_data_structures",
|
||||
|
@ -6,6 +6,7 @@ edition = "2021"
|
||||
[dependencies]
|
||||
# tidy-alphabetical-start
|
||||
indexmap = { version = "2.0.0" }
|
||||
itoa = "1.0"
|
||||
md5 = { package = "md-5", version = "0.10.0" }
|
||||
rustc_arena = { path = "../rustc_arena" }
|
||||
rustc_data_structures = { path = "../rustc_data_structures" }
|
||||
|
@ -2325,13 +2325,15 @@ pub mod sym {
|
||||
///
|
||||
/// The first few non-negative integers each have a static symbol and therefore
|
||||
/// are fast.
|
||||
pub fn integer<N: TryInto<usize> + Copy + ToString>(n: N) -> Symbol {
|
||||
pub fn integer<N: TryInto<usize> + Copy + itoa::Integer>(n: N) -> Symbol {
|
||||
if let Result::Ok(idx) = n.try_into() {
|
||||
if idx < 10 {
|
||||
return Symbol::new(super::SYMBOL_DIGITS_BASE + idx as u32);
|
||||
}
|
||||
}
|
||||
Symbol::intern(&n.to_string())
|
||||
let mut buffer = itoa::Buffer::new();
|
||||
let printed = buffer.format(n);
|
||||
Symbol::intern(printed)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user