rust 相关问题

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

如何正确使用crate read_io?

我的板条箱有一个小问题: 这段代码的工作原理: fn 主() { println!("摄氏度到华氏度"); print!("插入摄氏度:"); 让摄氏度:f32 = 读取!(); 打印...

回答 1 投票 0

将空列表传递给采用特征迭代器的函数

我有一些代码需要接受数据结构列表,这些数据结构可以是多种不同类型中的任何一种,但都实现了 Into。所以,我说参数是 impl

回答 1 投票 0

如何查找数组、向量或切片中元素的索引?

我需要在字符串向量中找到元素的索引。这是我到目前为止得到的: fn 主() { 让我们测试一下:Vec = vec![ “一”.to_string(), “二”.to_string(), ...

回答 2 投票 0

通过 macOS Accessibility API 请求辅助权限时出现段错误

我正在尝试创建一个 Rust 程序,该程序将在 macOS 上请求可访问权限。 如果授予权限(通过“设置”->“隐私和安全”->“辅助功能”),那么它...

回答 1 投票 0

如果嵌套,如何为自定义类型定义 flatten() 方法?

为了学习,我正在编写自己的函子实现。从功能上来说,它没有任何意义,但它是学习语言如何工作以及如何实现更复杂结构的好方法......

回答 1 投票 0

String::push_str 和 Vec::push 在生命周期约束方面有什么区别?

结构V<'a> { s: &'a mut 字符串, v:矢量<&'a String> } 实现<'a, 'b> V<'a> { pub fn set(&mut self, s: &'b String){ // self.s = s; ...

回答 1 投票 0

tokio::尝试加入! tokio::spawn 处理程序不会提前返回

#[tokio::main] 异步 fn main() -> io::Result<()> { // ... 让handle1 = tokio::spawn( 异步移动{method1().await }); 让handle2 = tokio::spawn( 异步移动{method2().await }); 放手...

回答 1 投票 0

不支持(“无法序列化枚举新类型变体`Example::Data`”)

我在尝试使用 Rust 中的 serde 序列化任何嵌套的 Enum-struct/newtype-variant 时收到此“无法序列化 Newtype Variant”错误。单位变体似乎工作正常。 那个...

回答 1 投票 0

如何将 &T 转换为 &Wrapper(T)?

我有这段代码展示了我的问题的简化。 结构包装器1(u32); 实现包装器1 { fn 内部(&self) -> &u32 { &self.0 } } 结构 Wrapper2(u...

回答 1 投票 0

当捕获类型化标头的处理程序缺少标头时,axum 中会发生什么?

axum 允许我使用 TypedHeader 结构在处理程序中捕获 http 标头。例如: 异步 fn 处理程序(TypedHeader(if_none_match): TypedHeader) -> String { 让埃塔...

回答 1 投票 0

rust 文档注释中的额外空格被解释为文档测试

看来,如果我在文档注释中留下一个空行,后跟 4 个空格的缩进,那么货物会将其解释为文档测试,并在我运行货物测试时给我一个失败。我应该知道什么...

回答 1 投票 0

如何为“静态”创建变量借用?

在 vulkano 中,要创建 CPUAccessibleBuffer,您需要给它一些数据,并且 CPUAccessibleBuffer::from_data 函数要求数据具有“静态生命周期”。 我在 &[u8] ...

回答 5 投票 0

Rust 为什么应用于引用的运算符会强制,但显式类型的 let 却不会?

考虑以下代码: fn 主() { 让 foo = 1; 让 bar: i32 = -&foo; //好的,-1 让 baz: i32 = &foo; //错误,预期为“i32”,发现为“&{integer}” 让坏: i32 = !&a...

回答 1 投票 0

Dockerfile ERROR RUN strip target/release/ 在 Windows 上

我正在按照一本教程指南进行操作,并且已成功生成 Rest API 响应 当我跑步时 docker build -t my_app 。 出现错误 错误 [生成器 6/6] 运行剥离目标/重新...

回答 1 投票 0

Rust 将线程池引用传递到线程池作业中

我正在尝试将作业添加到线程池,该线程池也必须能够将作业添加到该线程池。 我是 Rust 新手。 我试图使用它来将函数作为作业传递给线程池。 T...

回答 1 投票 0

如果类型满足条件,我可以创建默认特征实现吗?

是否可以为特征 TraitB 的函数/方法 fun_b 定义默认实现,以防特征 TraitA 也被实现? 下面我定义了一个额外的特征 TraitBDerived 与

回答 1 投票 0

[fn] 与 [(fn, u8)] 在类型推断方面有什么区别?

为什么会编译: fn 主() { 让 xs = [||1, ||2, ||3]; } 但这不? fn 主() { 让 xs = [(||1, 1), (||2, 2), (||3, 3)]; } 错误[E0308]:类型不匹配 --> src/main.rs:2...

回答 1 投票 0

在带有泛型参数的函数中使用具体类型时如何处理“预期类型参数,找到结构”错误?

我一直在使用 Rust 搞乱特征,并且遇到了一个问题。这是一些代码: 结构 Foo; 特质栏{} 为 Foo {} 实现 Bar fn 条(条:B){} fn 巴尔 我一直在使用 Rust 搞乱特征,并且遇到了一个问题。这是一些代码: struct Foo; trait Bar {} impl Bar for Foo {} fn bar<B: Bar>(bar: B) {} fn barr<B: Bar>() { bar(Foo); // 1. THIS WILL WORK let foo: B = Foo; // 2. THIS WILL NOT WORK let foo_vec: Vec<B> = vec![Foo]; // 3. THIS WILL NOT WORK } 这会产生错误: error[E0308]: mismatched types --> src/main.rs:11:18 | 11 | let foo: B = Foo; // 2. THIS WILL NOT WORK | ^^^ expected type parameter, found struct `Foo` | = note: expected type `B` found type `Foo` error[E0308]: mismatched types --> src/main.rs:12:32 | 12 | let foo_vec: Vec<B> = vec![Foo]; // 3. THIS WILL NOT WORK | ^^^ expected type parameter, found struct `Foo` | = note: expected type `_` found type `Foo` 为什么#2 和#3 不起作用?我怎样才能让编译器知道 Foo 实际上有 Bar impl? 另一个例子: struct Foo<B: Bar> { bar: Option<B>, } struct Foo2; trait Bar {} impl<B: Bar> Bar for Foo<B> {} impl Bar for Foo2 {} fn bar<B: Bar>(bar: B) {} fn circle_vec<B: Bar>() { bar(Foo2); // 1. WORKS Foo { bar: Some(Foo { bar: None }) }; // 2. WILL NOT WORK } 这会给我这个错误: error[E0282]: type annotations needed --> src/main.rs:17:21 | 17 | Foo { bar: Some(Foo { bar: None }) }; // 2. WILL NOT WORK | ^^^ cannot infer type for `B` 你有两个不同的问题,所以我想我会写两个不同的答案。 在您的第一个代码示例中,2 和 3 不起作用,因为 B 是一个 input 类型参数; barr 的调用者决定 B 是什么。然而,你试图强迫它成为Foo。 假设我们有另一个 Bar 的实现: struct Quux; impl Bar for Quux {} 假设我们这样调用 barr: barr::<Quux>() barr 本质上会被编译为: fn barr() { bar(Foo); let foo: Quux = Foo; let foo_vec: Vec<Quux> = vec![Foo]; } Foo 和 Quux 不兼容,Vec<Foo> 和 Vec<Quux> 也不兼容。 如果您尝试创建任意 Bar 对象的向量,则需要以非通用方式使用 Bar。由于特征类型未调整大小,因此您无法将它们直接存储在 Vec 中,因此您必须使用 Vec<Box<Bar>>、Vec<&Bar> 或包装指针的其他类型。 fn barr() { bar(Foo); let foo: Box<Bar> = Box::new(Foo); let foo_vec: Vec<Box<Bar>> = vec![Box::new(Foo) as Box<Bar>]; } 在您的第二个代码示例中,错误是 None 具有类型 Option<T>,并且编译器无法推断 T 的适当类型。我们可以像这样显式指定 T: fn circle_vec<B: Bar>() { bar(Foo2); Foo { bar: Some(Foo { bar: None::<Foo2> }), }; }

回答 1 投票 0

为什么输出生命周期没有被省略为单个显式生命周期?

Rust 书籍提供了以下代码来说明需要显式生命周期的有效函数定义: fn 最长<'a>(x: &'a str, y: &'a str) -> &'a str { ...

回答 1 投票 0

将录音从 js 发送到 actix-web 服务器以保存到磁盘

当前正在尝试将一些录制的音频从浏览器发送到 actix-web 服务器,并尝试将其保存到磁盘,从而从通用媒体播放器中生成可播放的曲目。我是...

回答 1 投票 0

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