为我自己的rng实现RngCore,函数返回结果



我有一个用例,需要实现我自己的rng,该rng可以传递给需要RngCore rng的函数。所以我需要为我的rng实现RngCore特性,它在esp32设备上运行。我现在的样子是:

impl RngCore for HRNG {
fn next_u32(&mut self) -> u32 {
let mut n : u32;
unsafe {
let n = esp_idf_sys::esp_random();
}
n
}
fn next_u64(&mut self) -> u64 {
let mut n : u32;
unsafe {
let n = esp_idf_sys::esp_random();
}
n
}
fn fill_bytes(&mut self, dest: &mut [u8]) {
unsafe { esp_idf_sys::esp_fill_random(dest.as_ptr() as *mut core::ffi::c_void, dest.len().try_into().unwrap()); }
}
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> {
//
}
}

我的问题是try_fill_bytes方法。它返回一个可能是错误的结果。现在代码给了我这个问题:

the size for values of type `(dyn std::error::Error + 'static)` cannot be known at compilation time

但是我需要实现这个特性,所以我不确定该怎么办,因为函数签名是必需的?

我该如何实现这一特点?

您需要rand::Error,而不是(隐含地dyn(std::error::Error

最新更新