Skip to content

Commit dc45fa6

Browse files
authored
Merge pull request #7 from statiolake/ja-all-enabled
Update crates
2 parents 368e805 + 180417d commit dc45fa6

File tree

2 files changed

+12
-37
lines changed

2 files changed

+12
-37
lines changed

Cargo.toml

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ modtype = "=0.7.0"
2525

2626
# 英数字などのASCII文字専用の文字列。文字にインデックスでアクセスしたり
2727
# substringを簡単に作ったりできる
28-
ascii = "=0.9.1"
28+
ascii = "=0.9.2"
2929

3030
# BitSet。C++のbitsetに相当
3131
bitset-fixed = "=0.1.0"
@@ -46,37 +46,30 @@ rustc-hash = "=1.0.1"
4646
# Rust 1.36.0からは標準ライブラリのHashMapがこれに置き換わる。(AtCoder 2019年言語
4747
# アップデートではそれより古い1.35.0を採用) ハッシュ関数として従来のSipHashが用いられる
4848
# ことに注意。(SipHashは暗号強度を持つため計算量が多く低速)
49-
hashbrown = "=0.4.0"
49+
hashbrown = "=0.5.0"
5050

5151
# 固定配列上のベクタ。ヒープ領域でなくスタック領域にアロケートされるので高速かもしれない
5252
smallvec = "=0.6.10"
53-
arrayvec = "=0.4.10"
53+
arrayvec = "=0.4.11"
5454

5555
# 標準ライブラリのVecやHashMapに対応する永続データ構造
5656
# 永続データ構造は関数型言語によく見られるデータ構造で、要素を更新しても、そのデータ構造の
5757
# 以前のバージョンにアクセスできる。(更新の度に差分が記録されていくイメージ)
58-
im = "=13.0.0" # スレッドセーフ
59-
im-rc = "=13.0.0" # スレッドセーフでないが高速
58+
im-rc = "=13.0.0"
6059

6160
# 多バイト長整数、分数、複素数など
6261
num = "=0.2.0"
6362

6463
# RNG 疑似乱数生成器 (randファミリー)
65-
rand = "=0.6.5"
66-
rand_chacha = "=0.1.1"
67-
rand_pcg = "=0.1.2"
68-
69-
# RNG 疑似乱数生成器 (SFMT)
70-
# SIMD-oriented Fast Mersenne Twister (SFMT)のpure Rust実装
71-
# 高速で高品質な疑似乱数を生成。モンテカルロ・シミュレーションに適している
72-
sfmt = "=0.5.0"
64+
rand = { version = "=0.7.0", features = ["small_rng"] }
65+
rand_chacha = "=0.2.1"
66+
rand_pcg = "=0.2.0"
7367

7468
# 正規表現
75-
regex = "=1.1.7"
69+
regex = "=1.2.1"
7670

7771
# staticアイテムの遅延初期化
7872
lazy_static = "=1.3.0"
79-
once_cell = "=0.2.1"
8073

8174
# 代替ヒープアロケータ。条件によってはシステムアロケータより速いことも
8275
jemallocator = "=0.3.2"

src/main.rs

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,9 @@ fn main() -> UnitResult {
1515
run_hashbrown();
1616
// run_smallvec();
1717
// run_arrayvec();
18-
// run_im();
1918
// run_im_rc();
2019
// run_num();
2120
run_rand_family()?;
22-
run_sfmt()?;
2321
run_regex()?;
2422
Ok(())
2523
}
@@ -248,7 +246,7 @@ fn run_bitset_fixed() {
248246
use rand::distributions::Uniform;
249247
use rand::prelude::*;
250248

251-
let mut rng = StdRng::seed_from_u64(114514);
249+
let rng = StdRng::seed_from_u64(114514);
252250
let dist = Uniform::from(0..2000);
253251

254252
let n = rng
@@ -267,7 +265,7 @@ fn run_bitset_fixed() {
267265
let ans = ((sum + 1) / 2..).find(|&i| bitset[i]).unwrap();
268266

269267
println!("N = {:?}\nAnswer = {}", n, ans);
270-
assert_eq!(ans, 14675);
268+
assert_eq!(ans, 13465);
271269
}
272270

273271
#[test]
@@ -371,7 +369,6 @@ fn test_hashbrown() {
371369
// smallvec
372370
// arrayvec
373371

374-
// im
375372
// im-rc
376373

377374
// num
@@ -405,24 +402,9 @@ fn test_rand_family() -> UnitResult {
405402
run_rand_family()
406403
}
407404

408-
// sfmt
409-
fn run_sfmt() -> UnitResult {
410-
use rand::prelude::*;
411-
use sfmt::SFMT;
412-
413-
let mut rng = SFMT::from_rng(thread_rng())?;
414-
let mean = calc_mean(&mut rng);
415-
println!("SFMT: mean = {:.4}", mean);
416-
assert_eq!((mean * 10.0).round() as u32, 5);
417-
Ok(())
418-
}
419-
420-
#[test]
421-
fn test_sfmt() -> UnitResult {
422-
run_sfmt()
423-
}
424-
425405
fn calc_mean(rng: &mut impl rand::Rng) -> f64 {
406+
// to see `impl Rng for &mut R where R: Rng`, which prevent moving in `rng.sample_iter()`
407+
use rand::Rng as _;
426408
const ITERATIONS: usize = 10000;
427409

428410
// the stardard distribution for f64 generates a random rumber in interval [0, 1)

0 commit comments

Comments
 (0)