ファイル読み書き

ファイル内容を読み込む

std::fs::read_to_stringを使います。これはResultを返し、Okな時はファイルの中身、Errな時はstd::io::Errorを返します。

use std::fs;

// `foo.txt`の中身は`foo`
let foo = fs::read_to_string("foo.txt").unwrap();

assert_eq!(foo, "foo");

存在しないファイルパスを渡してしまうとErrを返します。

または、sttd::fs::Filestd::io::BufReaderで読み校方法もあります。BufReader::read_to_stringにはstd::io::Readがスコープに必要な為それも持ってきます。

use std::fs::File;
use std::io::{BufReader, Read};

let file = File::open("foo.txt").unwrap();
let mut buf_reader = BufReader::new(file);
let mut contents = String::new();
buf_reader.read_to_string(&mut contents).unwrap();

assert_eq!(contents, "foo");

ファイルへ内容を書き込む

fs::File::createによって書き込み専用モードで対象のFileを取得し、その::write_allへ書き込みたい文字列を渡します。ですが、::write_allstd::io::Writeが持つメソッドで使うためにはstd::io::Writeの取り込みが必要です。

use std::fs;
use std::io::Write;

let mut file = fs::File::create("foo.txt").unwrap();
file.write_all(b"nju33").unwrap();

let contents = fs::read_to_string("foo.txt").unwrap();

assert_eq!(contents, "nju33");