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

implementing RngCore for my own rng, with function returning result

我有一个用例,我需要实现我自己的 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 方法。 它 returns 一个结果,这可能是一个错误。 当前代码给了我这个问题:

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

但是我需要实现特征,所以我不知道该怎么做,因为需要函数签名?

我如何真正实现这个特性?

你需要rand::Error, not (implicitly dyn) std::error::Error.