小编Sid*_*eli的帖子

为什么可变引用在 impl 和普通函数之间不一致?

对于 impl 块中的函数,我们使用以下语法:

fn test(&mut self) {}
Run Code Online (Sandbox Code Playgroud)

但对于普通函数,我们使用以下语法:

fn test(data: &mut u64) {}
Run Code Online (Sandbox Code Playgroud)

我理解self是变量,而Self是类型。在第一种情况下,我们使用&mut变量 ( self),但在第二种情况下,我们使用&mut类型 ( u64)。为什么会出现这种不一致的情况呢?

types reference rust mutable-reference

3
推荐指数
1
解决办法
121
查看次数

在写入之前读取文件会导致问题

重现该问题。运行以下代码两次。首先它会正常工作。但是,当有数据要从文件中读取时,写回时会导致问题。

我假设,当文件不为空时,读取会更改类型的状态,从而File在写入时导致问题。

use std::{
    fs::OpenOptions,
    io::{Read, Write},
};

fn main() {
    let mut file = OpenOptions::new()
        .read(true)
        .write(true)
        .create(true)
        .open("todo.txt")
        .unwrap();

    // Reading task before writing causing issue.
    let mut read_task = String::new();
    file.read_to_string(&mut read_task)
        .expect("Issue reading to string");

    let write_tasks = "1\n2\n3\n4\n";
    file.set_len(0).expect("Issue in setting len to zero");
    file.write(write_tasks.as_bytes()).expect("Issue writing to file");
}
Run Code Online (Sandbox Code Playgroud)

file file-read file-writing rust

0
推荐指数
1
解决办法
51
查看次数