|
49 | 49 | //! impl SeedableRng for Step32Rng { |
50 | 50 | //! type Seed = [u8; 4]; |
51 | 51 | //! |
| 52 | +//! #[inline] |
52 | 53 | //! fn from_seed(seed: Self::Seed) -> Self { |
53 | 54 | //! // Always use little-endian byte order to ensure portable results |
54 | 55 | //! let state = u32::from_le_bytes(seed); |
|
57 | 58 | //! } |
58 | 59 | //! |
59 | 60 | //! impl RngCore for Step32Rng { |
| 61 | +//! #[inline] |
60 | 62 | //! fn next_u32(&mut self) -> u32 { |
61 | 63 | //! // ... |
62 | 64 | //! # let val = self.state; |
63 | 65 | //! # self.state = val + 1; |
64 | 66 | //! # val |
65 | 67 | //! } |
66 | 68 | //! |
| 69 | +//! #[inline] |
67 | 70 | //! fn next_u64(&mut self) -> u64 { |
68 | 71 | //! le::next_u64_via_u32(self) |
69 | 72 | //! } |
70 | 73 | //! |
| 74 | +//! #[inline] |
71 | 75 | //! fn fill_bytes(&mut self, dst: &mut [u8]) { |
72 | 76 | //! le::fill_bytes_via_next_word(dst, || self.next_u32()); |
73 | 77 | //! } |
|
93 | 97 | //! impl SeedableRng for Step64Rng { |
94 | 98 | //! type Seed = [u8; 8]; |
95 | 99 | //! |
| 100 | +//! #[inline] |
96 | 101 | //! fn from_seed(seed: Self::Seed) -> Self { |
97 | 102 | //! // Always use little-endian byte order to ensure portable results |
98 | 103 | //! let state = u64::from_le_bytes(seed); |
|
101 | 106 | //! } |
102 | 107 | //! |
103 | 108 | //! impl RngCore for Step64Rng { |
| 109 | +//! #[inline] |
104 | 110 | //! fn next_u32(&mut self) -> u32 { |
105 | 111 | //! self.next_u64() as u32 |
106 | 112 | //! } |
107 | 113 | //! |
| 114 | +//! #[inline] |
108 | 115 | //! fn next_u64(&mut self) -> u64 { |
109 | 116 | //! // ... |
110 | 117 | //! # let val = self.state; |
111 | 118 | //! # self.state = val + 1; |
112 | 119 | //! # val |
113 | 120 | //! } |
114 | 121 | //! |
| 122 | +//! #[inline] |
115 | 123 | //! fn fill_bytes(&mut self, dst: &mut [u8]) { |
116 | 124 | //! le::fill_bytes_via_next_word(dst, || self.next_u64()); |
117 | 125 | //! } |
|
156 | 164 | //! impl SeedableRng for Block8x32Rng { |
157 | 165 | //! type Seed = [u8; 32]; |
158 | 166 | //! |
| 167 | +//! #[inline] |
159 | 168 | //! fn from_seed(seed: Self::Seed) -> Self { |
160 | 169 | //! let seed: [u32; 8] = le::read_words(&seed); |
161 | 170 | //! Self { |
|
166 | 175 | //! } |
167 | 176 | //! |
168 | 177 | //! impl RngCore for Block8x32Rng { |
| 178 | +//! #[inline] |
169 | 179 | //! fn next_u32(&mut self) -> u32 { |
170 | 180 | //! let Self { inner, buffer } = self; |
171 | 181 | //! le::next_word_via_gen_block(buffer, |block| inner.next_block(block)) |
172 | 182 | //! } |
173 | 183 | //! |
| 184 | +//! #[inline] |
174 | 185 | //! fn next_u64(&mut self) -> u64 { |
175 | 186 | //! let Self { inner, buffer } = self; |
176 | 187 | //! le::next_u64_via_gen_block(buffer, |block| inner.next_block(block)) |
177 | 188 | //! } |
178 | 189 | //! |
| 190 | +//! #[inline] |
179 | 191 | //! fn fill_bytes(&mut self, dst: &mut [u8]) { |
180 | 192 | //! let Self { inner, buffer } = self; |
181 | 193 | //! le::fill_bytes_via_gen_block(dst, buffer, |block| inner.next_block(block)); |
|
221 | 233 | //! impl SeedableRng for Block4x64Rng { |
222 | 234 | //! type Seed = [u8; 32]; |
223 | 235 | //! |
| 236 | +//! #[inline] |
224 | 237 | //! fn from_seed(seed: Self::Seed) -> Self { |
225 | 238 | //! let seed: [u64; 4] = le::read_words(&seed); |
226 | 239 | //! Self { |
|
231 | 244 | //! } |
232 | 245 | //! |
233 | 246 | //! impl RngCore for Block4x64Rng { |
| 247 | +//! #[inline] |
234 | 248 | //! fn next_u32(&mut self) -> u32 { |
235 | 249 | //! self.next_u64() as u32 |
236 | 250 | //! } |
237 | 251 | //! |
| 252 | +//! #[inline] |
238 | 253 | //! fn next_u64(&mut self) -> u64 { |
239 | 254 | //! let Self { inner, buffer } = self; |
240 | 255 | //! le::next_word_via_gen_block(buffer, |block| inner.next_block(block)) |
241 | 256 | //! } |
242 | 257 | //! |
| 258 | +//! #[inline] |
243 | 259 | //! fn fill_bytes(&mut self, dst: &mut [u8]) { |
244 | 260 | //! let Self { inner, buffer } = self; |
245 | 261 | //! le::fill_bytes_via_gen_block(dst, buffer, |block| inner.next_block(block)); |
|
265 | 281 | //! } |
266 | 282 | //! |
267 | 283 | //! impl RngCore for FillRng { |
| 284 | +//! #[inline] |
268 | 285 | //! fn next_u32(&mut self) -> u32 { |
269 | 286 | //! let mut buf = [0; 4]; |
270 | 287 | //! self.fill_bytes(&mut buf); |
271 | 288 | //! u32::from_le_bytes(buf) |
272 | 289 | //! } |
273 | 290 | //! |
| 291 | +//! #[inline] |
274 | 292 | //! fn next_u64(&mut self) -> u64 { |
275 | 293 | //! let mut buf = [0; 8]; |
276 | 294 | //! self.fill_bytes(&mut buf); |
277 | 295 | //! u64::from_le_bytes(buf) |
278 | 296 | //! } |
279 | 297 | //! |
| 298 | +//! #[inline] |
280 | 299 | //! fn fill_bytes(&mut self, dst: &mut [u8]) { |
281 | 300 | //! // ... |
282 | 301 | //! # for byte in dst { |
|
0 commit comments