标签: rust

什么是在Rust 1.x中读取和写入文件的事实上的方法?

由于Rust比较新,我看到了很多阅读和编写文件的方法.许多人为他们的博客提出了非常混乱的片段,我发现的99%的例子(即使在Stack Overflow上)来自不稳定的构建,不再有效.现在Rust是稳定的,什么是简单,可读,非恐慌的读取或写入文件片段?

这是我最接近阅读文本文件的东西,但它仍然没有编译,即使我很确定我已经包含了我应该拥有的一切.这是基于我在所有地方的Google+上发现的一个片段,我唯一改变的是旧BufferedReader的现在只是BufReader:

use std::fs::File;
use std::io::BufReader;
use std::path::Path;

fn main() {
    let path = Path::new("./textfile");
    let mut file = BufReader::new(File::open(&path));
    for line in file.lines() {
        println!("{}", line);
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨:

error: the trait bound `std::result::Result<std::fs::File, std::io::Error>: std::io::Read` is not satisfied [--explain E0277]
 --> src/main.rs:7:20
  |>
7 |>     let mut file = BufReader::new(File::open(&path));
  |>                    ^^^^^^^^^^^^^^
note: required by `std::io::BufReader::new`

error: no method named `lines` found for type `std::io::BufReader<std::result::Result<std::fs::File, std::io::Error>>` in the current scope
 --> src/main.rs:8:22
  |> …
Run Code Online (Sandbox Code Playgroud)

file-io rust

107
推荐指数
3
解决办法
3万
查看次数

如何在Rust中拆分字符串?

文档来看,目前尚不清楚.在Java中,您可以使用如下split方法:

"some string 123 ffd".split("123");
Run Code Online (Sandbox Code Playgroud)

rust

103
推荐指数
6
解决办法
7万
查看次数

Copy和Clone有什么区别?

这个问题似乎暗示它只是一个实现细节(memcpyvs ???),但我找不到任何明确的差异描述.

rust

103
推荐指数
4
解决办法
2万
查看次数

什么'让x = x'在Rust中做什么?

在野外看到了这段代码:

fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Run Code Online (Sandbox Code Playgroud)

这条let fields = fields;线做什么?为什么会这样?

rust

103
推荐指数
2
解决办法
4988
查看次数

rust-analyzer 未能发现 vscode 中的工作区

我开始学习 Rust 语言,但我遇到了rust-analyzervscode 扩展的问题。

这张图片没有为我提供有关问题根源的任何附加信息。我尝试查找与我的错误相关的文章,但失败了。请帮忙!

UPD1。

目录截图:

在此输入图像描述

Cargo.toml内容截图:

在此输入图像描述

guessing_game 目录是使用cargo new guessing_game命令创建的

rust visual-studio-code vscode-extensions rust-analyzer

101
推荐指数
5
解决办法
8万
查看次数

为什么不鼓励接受对String(&String),Vec(&Vec)或Box(&Box)的引用作为函数参数?

我写了一些Rust代码&String作为参数:

fn awesome_greeting(name: &String) {
    println!("Wow, you are awesome, {}!", name);
}
Run Code Online (Sandbox Code Playgroud)

我还编写了代码来引用a VecBox:

fn total_price(prices: &Vec<i32>) -> i32 {
    prices.iter().sum()
}

fn is_even(value: &Box<i32>) -> bool {
    **value % 2 == 0
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到一些反馈意见,这样做并不是一个好主意.为什么不?

string reference rust borrowing

100
推荐指数
2
解决办法
5549
查看次数

如何创建一个全局的,可变的单例?

在系统中只创建一个实例的结构创建和使用的最佳方法是什么?是的,这是必要的,它是OpenGL子系统,制作多个副本并将其传递到各处会增加混乱,而不是减轻它.

单身人士需要尽可能高效.似乎不可能在静态区域上存储任意对象,因为它包含Vec带有析构函数的对象.第二个选项是在静态区域存储(不安全)指针,指向堆分配单例.什么是最方便和最安全的方法,同时保持语法简洁.

rust

97
推荐指数
3
解决办法
3万
查看次数

闭包何时实现Fn,FnMut和FnOnce?

哪些具体条件为闭合来实现Fn,FnMutFnOnce特质?

那是:

  • 闭包什么时候没有实现这个FnOnce特性?
  • 闭包什么时候没有实现这个FnMut特性?
  • 闭包什么时候没有实现这个Fn特性?

例如,改变它的主体上的闭包状态会使编译器无法实现Fn它.

closures rust

97
推荐指数
2
解决办法
1万
查看次数

多行字符串文字的语法是什么?

我很难弄清楚Rust中的字符串语法是如何工作的.具体来说,我试图找出如何制作多行字符串.

string rust

95
推荐指数
5
解决办法
3万
查看次数

是否可以使类型只能移动而不能复制?

编者注:在Rust 1.0之前问过这个问题,问题中的一些断言在Rust 1.0中不一定正确.一些答案已更新,以解决这两个版本.

我有这个结构

struct Triplet {
    one: i32,
    two: i32,
    three: i32,
}
Run Code Online (Sandbox Code Playgroud)

如果我将它传递给函数,则会隐式复制它.现在,有时我读到某些值不可复制,因此必须移动.

是否有可能使这个结构Triplet不可复制?例如,是否有可能实现一个Triplet不可复制的特性,因此可以"移动"?

我读到某个地方必须实现Clone特征来复制那些不能隐式复制的东西,但是我从来没有读过相反的东西,那就是有一些隐式可复制的东西,并使它不可复制,以便它移动.

这甚至有意义吗?

rust

93
推荐指数
2
解决办法
2万
查看次数