Skip to content

Commit d18e856

Browse files
committed
lpc55-rng: Make ReseedingRng generic over the reseeder.
1 parent 791a171 commit d18e856

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

drv/lpc55-rng/src/main.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@ use userlib::*;
2121
task_slot!(SYSCON, syscon_driver);
2222

2323
// low-budget rand::rngs::adapter::ReseedingRng w/o fork stuff
24-
struct ReseedingRng<T: SeedableRng> {
24+
struct ReseedingRng<T: SeedableRng, R: RngCore> {
2525
inner: T,
26-
reseeder: Lpc55Rng,
26+
reseeder: R,
2727
threshold: usize,
2828
bytes_until_reseed: usize,
2929
}
3030

31-
impl<T> ReseedingRng<T>
31+
impl<T, R> ReseedingRng<T, R>
3232
where
3333
T: SeedableRng,
34+
R: RngCore,
3435
{
35-
fn new(mut reseeder: Lpc55Rng, threshold: usize) -> Result<Self, Error> {
36+
fn new(mut reseeder: R, threshold: usize) -> Result<Self, Error> {
3637
let threshold = if threshold == 0 {
3738
usize::MAX
3839
} else {
@@ -48,9 +49,10 @@ where
4849
}
4950
}
5051

51-
impl<T> RngCore for ReseedingRng<T>
52+
impl<T, R> RngCore for ReseedingRng<T, R>
5253
where
5354
T: SeedableRng + RngCore,
55+
R: RngCore,
5456
{
5557
fn next_u32(&mut self) -> u32 {
5658
impls::next_u32_via_fill(self)
@@ -74,7 +76,7 @@ where
7476
}
7577
}
7678

77-
struct Lpc55RngServer(ReseedingRng<ChaCha20Rng>);
79+
struct Lpc55RngServer(ReseedingRng<ChaCha20Rng, Lpc55Rng>);
7880

7981
impl Lpc55RngServer {
8082
fn new(reseeder: Lpc55Rng, threshold: usize) -> Result<Self, Error> {

0 commit comments

Comments
 (0)