rust - 使用 web_sys 生成随机数数组

标签 rust webassembly

我正在尝试使用 web_sys crate

用随机数填充一个向量

像这样:

extern crate web_sys;

use web_sys::Crypto;    

// ...

fn main() {
    // ...

    let mut arry = [0u8; 128];
    let crypto = Crypto::new();
    crypto.get_random_values_with_u8_array(&mut arry)

    // ...
}

不过,Crypto 结构并未实现 方法,文档也未提及实例化该结构所需的字段。

我在我的 Cargo.toml 文件中包含了 Crypto 作为特性:

[dependencies.web-sys]
 version = "0.3"
 features = [
   "Crypto"
 ]

这是相关的文档页面:

https://docs.rs/web-sys/0.3.35/i686-unknown-linux-gnu/web_sys/struct.Crypto.html

有人用过吗?

最佳答案

感谢 Masklinn 的评论,我能够通过获取 Window 实例并在其上调用 crypto 来实现它。

let mut rand_arry = [0u8; 128];
let window_instance = web_sys::window().unwrap();
let crypto = window_instance.crypto.unwrap();
crypto.get_random_values_with_u8_array(&mut rand_arry).unwrap();

确保将 CryptoWindow 声明为 web-sys 特性

[dependencies.web-sys]
version = "0.3"
features = [
    "Window",
    "Crypto"
]  

关于rust - 使用 web_sys 生成随机数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63774609/

相关文章:

browser - 如何检查浏览器是否支持 WebAssembly?

rust - 如何为 Hyper 处理程序共享可变状态?

rust - 红 bean 杉应用程序-rustwasm错误未捕获的RangeError : Maximum call stack size exceeded

c++ - 将 C/C++ 套接字传递到 EM_ASM 以用作 Emscripten 中的 websocket

rust - 为什么 Iterator::filter 方法接受一个可变引用作为 self?

webassembly - WebAssembly 可用的函数

Blazor 访问硬件

rust - 为什么 Rust borrow checker 会忽略函数参数中的可变指针?

rust - 运行命令时如何避免僵尸进程?

rust - 最小 future 回调示例中出现 "Expected lifetime parameter"错误?