rust 相关问题

Rust是一种用于以简单方式编写高度可靠和快速软件的语言。它可用于从高级代码到特定于硬件的代码,从大型熨斗到小型设备。

TokenAccount 没有实现鉴别器

我目前正在深入研究 Solana 区块链上的编程,并开始了一个非常基本的锚程序。在文档中,他们有以下示例 - 请参阅“使用帐户<'a, T...

回答 1 投票 0

不带 AEAD(标签)的 AES-GCM

我正在尝试用 Rust 实现解密服务。 rust-crypto crate 在我的机器(Apple M1 Max)上不起作用,因为符号 _rust_crypto_util_fixed_time_eq_asm 未定义。 刷完之后...

回答 1 投票 0

在 Rust 中静态链接 BFD 会引发错误

我是 Rust 中使用 C 的新手,目前正在尝试使用 BFD 构建二进制加载器。 使用bindgen 生成Rust 绑定非常有效。 在我的 build.rs 中我使用了: println!("货物:生锈...

回答 1 投票 0

使用接受闭包的方法在 Rust 中创建对象安全特征

我想为 Map 创建一个具有以下定义的特征: 酒吧特征图 { fn put(&mut self, k: K, v: V) -> Option; fn upsert...

回答 2 投票 0

在 Rust 中查找 comptime 中的 SIMD 行数

我为点积编写了以下 simd 友好的代码: pub fn scalar_product_simd(a: &[T], b: &[T]) -> T 在哪里 T:乘法 + 求和 + 复制 + 加法 我为点积编写了以下 simd 友好的代码: pub fn scalar_product_simd<T>(a: &[T], b: &[T]) -> T where T: Mul<Output = T> + Sum + Copy + Add<Output = T>, { const CHUNK_SIZE: usize = 4; assert!(a.len() >= CHUNK_SIZE && b.len() >= CHUNK_SIZE && a.len() == b.len()); let mut i = 0; let mut acc = a .chunks_exact(CHUNK_SIZE) .zip(b.chunks_exact(CHUNK_SIZE)) .map(|(aa, bb)| { i += CHUNK_SIZE; aa.iter().zip(bb).map(|(&x, &y)| x * y).sum() }) .sum(); // handle remaining elements acc = acc + scalar_product(&a[i..], &b[i..]); acc } 如何根据编译参数和T类型的大小来设置CHUNK_SIZE值。例如,对于 T:f64 和 AVX2 CHUNK_SIZE 将等于 4 ? 也许有一种正确的方法可以使用 std::simd 重写此代码? 我认为我不完全理解你的问题,但是如果你想根据 CHUNK_SIZE 的类型拥有不同的常量 T 值,并且你想要支持的 T 数量有限,你可以创建一个辅助特征。 trait SimdHelper { const CHUNK_SIZE: usize; } impl SimdHelper for f64 { const CHUNK_SIZE: usize = 4; } pub fn scalar_product_simd<T>(a: &[T], b: &[T]) -> T where T: Mul<Output = T> + Sum + Copy + Add<Output = T>, T: SimdHelper, { const CHUNK_SIZE: usize = <T as SimdHelper>::CHUNK_SIZE; ... }

回答 1 投票 0

如何从 Rust Ring Digest 获取摘要字符串格式结果

我正在使用 rustring(ring = "0.16.20") 来获取消息摘要,这是我的代码: 使用ring::{摘要,测试}; fn 主() { 让实际 = 摘要::摘要(&摘要::SHA512, b"你好, ...

回答 2 投票 0

生成的期货结构是怎样的?

我刚刚从这篇博文中了解到我们可以使用 #[rustc_layout(debug)] 转储类型布局。我立即尝试用它来看穿生成的期货。 这是一个例子:(Rust Playground)...

回答 1 投票 0

为什么 Cargo nextest 在找到我的一些测试后选择不运行它们?

我刚刚运行了一组我一直在开发的测试。 突然间我开始得到这样的总结: 摘要 [ 0.598s] 运行 26/28 次测试:24 次通过,2 次失败,0 次跳过 更具体地说,我来...

回答 1 投票 0

Rust Rayon ThreadPool:“不能借用可变的,因为它是 Fn 闭包中捕获的变量”

我正在尝试通过制作一个简单的向量加法函数来学习Rust的Rayon库。我当前的代码是这样的,假设 a、b 和 c 是初始化为相同长度的向量,c 是可变的并且

回答 1 投票 0

排序数组中的下界未按预期工作

pub fn find_floor(arr: &[i32], 目标: i32) -> Option { let (mut left, mut right) = (0, arr.len()); 离开时 < right { let mid = (left + right) / 2; ...

回答 1 投票 0

从另一个线程控制线程会导致 Rust 中出现意外行为

在我的示例中,某些事件未得到处理(消息未打印),我不明白为什么。 为了激励我的代码一点:我想要解决的问题(当前)只是一个简单的闪烁 LED

回答 1 投票 0

为什么实例化 core::time::Nanoseconds 不安全?

我正在 core::time 中漫步,并对纳秒的实现感到惊讶。 为什么实例化它需要一个不安全的块? 我理解有关范围限制的评论...

回答 1 投票 0

bigint 中英文混合输出会在 rust 中产生不同的结果

我想获取证书的公钥并打印为bigint,所以我编写了rust代码来获取这个: 使用 std::fs::File; 使用 std::io::Read ; 使用 num_bigint::{BigInt, BigUint, ToBigInt, ToBigUint}; ...

回答 1 投票 0

Rust 结构的 TypeScript 等价物是什么?

我已经用 TypeScript 编写了大约一年左右的时间,我在 Github 上发现了一个用 Rust 编写的不错的项目,我想将其包装在 TypeScript 中。我从来没有用 Rust 编程过,但我...

回答 2 投票 0

如何使用 tokio-tungstenite 进行超时阻塞读取?

是否有一个简单的 API 可以在读取 tokio-tungstenite 中的下一条 websocket 消息时超时阻止? 现在,我有: read.next().await 其中 read 是一个 SplitStream 是否有一个简单的 API 可以在读取 tokio-tungstenite 中的下一条 websocket 消息时超时阻止? 现在,我有: read.next().await 其中 read 是 SplitStream<WebSocketStream<MaybeTlsStream<TcpStream>>> 这将“永远”阻塞,直到收到消息或错误(例如操作系统强制关闭套接字)。 我想做的是read.next(timeout).await,它要么等待消息/错误,要么在超时后放弃。 有什么办法可以做到这一点吗? [tokio][1] 有一个 [timeout][1] 函数,它将在超时时阻塞 [Future][1]。 它确实创建了一些需要解构的嵌套。例如: match timeout(Duration::from_secs(100), read.next()).await { Err(elapsed) => // timed out Ok(None) => // read.next returned None Ok(Some(msg)) => match msg { Ok(Message::Text(text)) => // // ... Err(e) => // Error receiving the message } }

回答 1 投票 0

使用私钥格式化字符串来扭曲 json 回复

我在 Web 应用程序中使用 warp 回复 json 格式为 oAuth 流程创建公钥/私钥对。私钥在 warp 端点中以 json 形式返回给 api 中的用户,如下所示, 实际

回答 1 投票 0

在编译时完全同步双缓冲,类似于 thread::scope?

在双缓冲中,主线程在后台线程改变缓冲区 B 的同时改变缓冲区 A,然后当每个线程完成时,A 移动到后台,B 移动到前台。 (在我的...

回答 1 投票 0

为什么实例化纳秒不安全?

我正在 core::time 中漫步,并对纳秒的实现感到惊讶。 为什么实例化它需要一个不安全的块? 我理解有关范围限制的评论...

回答 1 投票 0

为什么从引用切换到 RefCell 会导致借用检查器失败?

Rust (1.78.0) 成功编译以下代码: struct Foo<'a>(&'a mut usize); impl<'a> Foo<'a> { pub fn func(&self, _s: &'a mut String) -> &'a str ...

回答 1 投票 0

通过切片澄清所有权

在 Rust 书中,他们给出了以下示例 fn 主() { 让 mut s = String::from("hello world"); 让单词=first_word(&s); s.clear(); println!(“第一个...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.