1 #![feature(alloc_layout_extra)]
2 #![feature(array_chunks)]
3 #![feature(array_methods)]
4 #![feature(array_windows)]
5 #![feature(bigint_helper_methods)]
6 #![feature(cell_update)]
7 #![feature(const_align_offset)]
8 #![feature(const_assume)]
9 #![feature(const_align_of_val_raw)]
10 #![feature(const_black_box)]
11 #![feature(const_bool_to_option)]
12 #![feature(const_caller_location)]
13 #![feature(const_cell_into_inner)]
14 #![feature(const_convert)]
15 #![feature(const_hash)]
16 #![feature(const_heap)]
17 #![feature(const_maybe_uninit_as_mut_ptr)]
18 #![feature(const_maybe_uninit_assume_init_read)]
19 #![feature(const_nonnull_new)]
20 #![feature(const_num_from_num)]
21 #![feature(const_pointer_byte_offsets)]
22 #![feature(const_pointer_is_aligned)]
23 #![feature(const_ptr_as_ref)]
24 #![feature(const_ptr_read)]
25 #![feature(const_ptr_write)]
26 #![feature(const_trait_impl)]
27 #![feature(const_likely)]
28 #![feature(const_location_fields)]
29 #![feature(core_intrinsics)]
30 #![feature(core_private_bignum)]
31 #![feature(core_private_diy_float)]
33 #![feature(div_duration)]
34 #![feature(duration_consts_float)]
35 #![feature(duration_constants)]
36 #![feature(exact_size_is_empty)]
37 #![feature(extern_types)]
39 #![feature(fmt_internals)]
40 #![feature(float_minimum_maximum)]
41 #![feature(future_join)]
42 #![feature(generic_assert_internals)]
43 #![feature(array_try_from_fn)]
44 #![feature(hasher_prefixfree_extras)]
45 #![feature(hashmap_internals)]
47 #![feature(inline_const)]
48 #![feature(is_sorted)]
49 #![feature(layout_for_ptr)]
51 #![feature(sort_internals)]
52 #![feature(slice_take)]
53 #![feature(slice_from_ptr_range)]
54 #![feature(split_as_slice)]
55 #![feature(maybe_uninit_uninit_array)]
56 #![feature(maybe_uninit_write_slice)]
57 #![feature(maybe_uninit_uninit_array_transpose)]
58 #![feature(min_specialization)]
60 #![feature(step_trait)]
61 #![feature(str_internals)]
62 #![feature(std_internals)]
64 #![feature(trusted_len)]
65 #![feature(try_blocks)]
66 #![feature(try_trait_v2)]
67 #![feature(slice_internals)]
68 #![feature(slice_partition_dedup)]
70 #![feature(ip_in_core)]
71 #![feature(iter_advance_by)]
72 #![feature(iter_array_chunks)]
73 #![feature(iter_collect_into)]
74 #![feature(iter_partition_in_place)]
75 #![feature(iter_intersperse)]
76 #![feature(iter_is_partitioned)]
77 #![feature(iter_next_chunk)]
78 #![feature(iter_order_by)]
79 #![feature(iter_repeat_n)]
80 #![feature(iterator_try_collect)]
81 #![feature(iterator_try_reduce)]
83 #![feature(const_ipv4)]
84 #![feature(const_ipv6)]
85 #![feature(const_mut_refs)]
86 #![feature(const_pin)]
87 #![feature(const_waker)]
88 #![feature(never_type)]
89 #![feature(unwrap_infallible)]
90 #![feature(pointer_byte_offsets)]
91 #![feature(pointer_is_aligned)]
92 #![feature(portable_simd)]
93 #![feature(ptr_metadata)]
94 #![feature(lazy_cell)]
95 #![feature(unsized_tuple_coercion)]
96 #![feature(const_option)]
97 #![feature(const_option_ext)]
98 #![feature(const_result)]
99 #![feature(integer_atomics)]
100 #![feature(int_roundings)]
101 #![feature(slice_group_by)]
102 #![feature(split_array)]
103 #![feature(strict_provenance)]
104 #![feature(strict_provenance_atomic_ptr)]
105 #![feature(trusted_random_access)]
107 #![feature(const_array_from_ref)]
108 #![feature(const_slice_from_ref)]
109 #![feature(waker_getters)]
110 #![feature(slice_flatten)]
111 #![feature(provide_any)]
112 #![feature(utf8_chunks)]
113 #![feature(is_ascii_octdigit)]
114 #![feature(get_many_mut)]
115 #![deny(unsafe_op_in_unsafe_fn)]
116 #![deny(fuzzy_provenance_casts)]
163 /// Copied from `std::test_helpers::test_rng`, see that function for rationale.
165 #[allow(dead_code)] // Not used in all configurations.
166 pub(crate) fn test_rng() -> rand_xorshift
::XorShiftRng
{
167 use core
::hash
::{BuildHasher, Hash, Hasher}
;
168 let mut hasher
= std
::collections
::hash_map
::RandomState
::new().build_hasher();
169 core
::panic
::Location
::caller().hash(&mut hasher
);
170 let hc64
= hasher
.finish();
171 let seed_vec
= hc64
.to_le_bytes().into_iter().chain(0u8..8).collect
::<Vec
<u8>>();
172 let seed
: [u8; 16] = seed_vec
.as_slice().try_into().unwrap();
173 rand
::SeedableRng
::from_seed(seed
)