mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Replace rand with oorandom
This commit is contained in:
parent
76202a2c73
commit
ba585309ec
7 changed files with 44 additions and 98 deletions
|
@ -17,7 +17,7 @@ indexmap = "1.3.2"
|
|||
itertools = "0.9.0"
|
||||
log = "0.4.8"
|
||||
rustc-hash = "1.1.0"
|
||||
rand = { version = "0.7.3", features = ["small_rng"] }
|
||||
oorandom = "11.1.2"
|
||||
|
||||
stdx = { path = "../stdx" }
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
//! Renders a bit of code as HTML.
|
||||
|
||||
use oorandom::Rand32;
|
||||
use ra_db::SourceDatabase;
|
||||
use ra_syntax::{AstNode, TextRange, TextSize};
|
||||
|
||||
|
@ -9,13 +10,12 @@ pub(crate) fn highlight_as_html(db: &RootDatabase, file_id: FileId, rainbow: boo
|
|||
let parse = db.parse(file_id);
|
||||
|
||||
fn rainbowify(seed: u64) -> String {
|
||||
use rand::prelude::*;
|
||||
let mut rng = SmallRng::seed_from_u64(seed);
|
||||
let mut rng = Rand32::new(seed);
|
||||
format!(
|
||||
"hsl({h},{s}%,{l}%)",
|
||||
h = rng.gen_range::<u16, _, _>(0, 361),
|
||||
s = rng.gen_range::<u16, _, _>(42, 99),
|
||||
l = rng.gen_range::<u16, _, _>(40, 91),
|
||||
h = rng.rand_range(0..361),
|
||||
s = rng.rand_range(42..99),
|
||||
l = rng.rand_range(40..91),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -36,14 +36,14 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
|
|||
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
|
||||
</style>
|
||||
<pre><code><span class="keyword">fn</span> <span class="function declaration">main</span><span class="punctuation">(</span><span class="punctuation">)</span> <span class="punctuation">{</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="2705725358298919760" style="color: hsl(17,51%,74%);">x</span> <span class="operator">=</span> <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span><span class="punctuation">.</span><span class="unresolved_reference">to_string</span><span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="3365759661443752373" style="color: hsl(127,76%,66%);">y</span> <span class="operator">=</span> <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span><span class="punctuation">.</span><span class="unresolved_reference">to_string</span><span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="8121853618659664005" style="color: hsl(273,88%,88%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="2705725358298919760" style="color: hsl(76,47%,83%);">x</span> <span class="operator">=</span> <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(273,88%,88%);">hello</span><span class="punctuation">.</span><span class="unresolved_reference">to_string</span><span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="3365759661443752373" style="color: hsl(15,86%,51%);">y</span> <span class="operator">=</span> <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(273,88%,88%);">hello</span><span class="punctuation">.</span><span class="unresolved_reference">to_string</span><span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">;</span>
|
||||
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="794745962933817518" style="color: hsl(19,74%,76%);">x</span> <span class="operator">=</span> <span class="string_literal">"other color please!"</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="6717528807933952652" style="color: hsl(85,49%,84%);">y</span> <span class="operator">=</span> <span class="variable" data-binding-hash="794745962933817518" style="color: hsl(19,74%,76%);">x</span><span class="punctuation">.</span><span class="unresolved_reference">to_string</span><span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="794745962933817518" style="color: hsl(127,71%,87%);">x</span> <span class="operator">=</span> <span class="string_literal">"other color please!"</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration" data-binding-hash="6717528807933952652" style="color: hsl(90,74%,79%);">y</span> <span class="operator">=</span> <span class="variable" data-binding-hash="794745962933817518" style="color: hsl(127,71%,87%);">x</span><span class="punctuation">.</span><span class="unresolved_reference">to_string</span><span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">;</span>
|
||||
<span class="punctuation">}</span>
|
||||
|
||||
<span class="keyword">fn</span> <span class="function declaration">bar</span><span class="punctuation">(</span><span class="punctuation">)</span> <span class="punctuation">{</span>
|
||||
<span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="punctuation">;</span>
|
||||
<span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable" data-binding-hash="8121853618659664005" style="color: hsl(273,88%,88%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="punctuation">;</span>
|
||||
<span class="punctuation">}</span></code></pre>
|
|
@ -23,7 +23,7 @@ log = "0.4.8"
|
|||
lsp-types = { version = "0.78.0", features = ["proposed"] }
|
||||
parking_lot = "0.11.0"
|
||||
pico-args = "0.3.1"
|
||||
rand = { version = "0.7.3", features = ["small_rng"] }
|
||||
oorandom = "11.1.2"
|
||||
rustc-hash = "1.1.0"
|
||||
serde = { version = "1.0.106", features = ["derive"] }
|
||||
serde_json = "1.0.48"
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
//! Fully type-check project and print various stats, like the number of type
|
||||
//! errors.
|
||||
|
||||
use std::{path::Path, time::Instant};
|
||||
use std::{
|
||||
path::Path,
|
||||
time::{Instant, SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
|
||||
use hir::{
|
||||
db::{AstDatabase, DefDatabase, HirDatabase},
|
||||
|
@ -10,12 +13,12 @@ use hir::{
|
|||
use hir_def::FunctionId;
|
||||
use hir_ty::{Ty, TypeWalk};
|
||||
use itertools::Itertools;
|
||||
use oorandom::Rand32;
|
||||
use ra_db::{
|
||||
salsa::{self, ParallelDatabase},
|
||||
SourceDatabaseExt,
|
||||
};
|
||||
use ra_syntax::AstNode;
|
||||
use rand::{seq::SliceRandom, thread_rng};
|
||||
use rayon::prelude::*;
|
||||
use rustc_hash::FxHashSet;
|
||||
use stdx::format_to;
|
||||
|
@ -46,6 +49,11 @@ pub fn analysis_stats(
|
|||
load_output_dirs: bool,
|
||||
with_proc_macro: bool,
|
||||
) -> Result<()> {
|
||||
let mut rng = {
|
||||
let seed = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64;
|
||||
Rand32::new(seed)
|
||||
};
|
||||
|
||||
let db_load_time = Instant::now();
|
||||
let (host, vfs) = load_cargo(path, load_output_dirs, with_proc_macro)?;
|
||||
let db = host.raw_database();
|
||||
|
@ -57,7 +65,7 @@ pub fn analysis_stats(
|
|||
|
||||
let mut krates = Crate::all(db);
|
||||
if randomize {
|
||||
krates.shuffle(&mut thread_rng());
|
||||
shuffle(&mut rng, &mut krates);
|
||||
}
|
||||
for krate in krates {
|
||||
let module = krate.root_module(db).expect("crate without root module");
|
||||
|
@ -72,7 +80,7 @@ pub fn analysis_stats(
|
|||
}
|
||||
|
||||
if randomize {
|
||||
visit_queue.shuffle(&mut thread_rng());
|
||||
shuffle(&mut rng, &mut visit_queue);
|
||||
}
|
||||
|
||||
eprintln!("Crates in this dir: {}", num_crates);
|
||||
|
@ -110,7 +118,7 @@ pub fn analysis_stats(
|
|||
);
|
||||
|
||||
if randomize {
|
||||
funcs.shuffle(&mut thread_rng());
|
||||
shuffle(&mut rng, &mut funcs);
|
||||
}
|
||||
|
||||
let mut bar = match verbosity {
|
||||
|
@ -306,3 +314,10 @@ pub fn analysis_stats(
|
|||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn shuffle<T>(rng: &mut Rand32, slice: &mut [T]) {
|
||||
for i in (1..slice.len()).rev() {
|
||||
let idx = rng.rand_range(0..i as u32) as usize;
|
||||
slice.swap(idx, i - 1)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue