std Library

Rustの標準ライブラリ。

プリミティブ型

str

https://doc.rust-lang.org/std/primitive.str.html

See also Module std::str

“string slice” とも呼ばれる。

Examples:

let hello = "Hello, world!";

// with an explicit type annotation
let hello: &'static str = "Hello, world!";

マクロ

eprint

Macro std::eprint

標準エラー出力(io::stderr)に書き込む以外はprint!と同じ。

Examples:

eprint!("Error: Could not complete task");

eprintln

Macro std::eprintln

println!の標準エラー出力版。

format

Macro std::format

書式指定付きで String を作る。
書式についての詳細はstd::fmtを見よ。

ふつうは文字列の結合や補間に用いられる。

値を文字列に変換するには、to_stringを用いると良い。

Examples:

format!("Hello");                 // => "Hello"
format!("Hello, {}!", "world");   // => "Hello, world!"
format!("The number is {}", 1);   // => "The number is 1"
format!("{:?}", (3, 4));          // => "(3, 4)" Debug output
format!("{value}", value=4);      // => "4"
format!("{} {}", 1, 2);           // => "1 2"
format!("{:04}", 42);             // => "0042" with leading zeros

print

Macro std::print

標準出力(io::stdout)に書き込む。
改行しないことを除いて println と同等。

format! と同じ書式指定が可能。See std::fmt

バッファリングされる可能性があるので、明示的にio::stdout().flush()を実行する必要があるかもしれない。

エラー出力にはeprint!を使うこと。

println

Macro std::println

Examples:

println!(); // prints just a newline
println!("hello there!");
println!("format {} arguments", "some");

ops (Module)

Module std::ops

オーバーロード可能な演算子。
このモジュールで定義されたトレイトを実装することで、各種演算子のオーバーロードを可能にする。

Examples:

use std::ops::{Add, Sub};

#[derive(Debug, PartialEq)]
struct Point {
    x: i32,
    y: i32,
}

impl Add for Point {
    type Output = Point;

    fn add(self, other: Point) -> Point {
        Point {x: self.x + other.x, y: self.y + other.y}
    }
}

impl Sub for Point {
    type Output = Point;

    fn sub(self, other: Point) -> Point {
        Point {x: self.x - other.x, y: self.y - other.y}
    }
}

assert_eq!(Point {x: 3, y: 3}, Point {x: 1, y: 0} + Point {x: 2, y: 3});
assert_eq!(Point {x: -1, y: -3}, Point {x: 1, y: 0} - Point {x: 2, y: 3});

Deref (Trait)

Trait std::ops::Deref

*v のように、イミュータブルなデリファレンスの演算に使われる。

ガイド:

path (Module)

Module std::path

クロスプラットフォームなパス操作機能を提供する。

Examples:

use std::path::Path;
use std::ffi::OsStr;

let path = Path::new("/tmp/foo/bar.txt");

let parent = path.parent();
assert_eq!(parent, Some(Path::new("/tmp/foo")));

let file_stem = path.file_stem();
assert_eq!(file_stem, Some(OsStr::new("bar")));

let extension = path.extension();
assert_eq!(extension, Some(OsStr::new("txt")));

// パスの作成や変更
use std::path::PathBuf;

// This way works...
let mut path = PathBuf::from("c:\\");

path.push("windows");
path.push("system32");

path.set_extension("dll");

// ... but push is best used if you don't know everything up
// front. If you do, this way is better:
let path: PathBuf = ["c:\\", "windows", "system32.dll"].iter().collect();

PathBuf (Struct)

Struct std::path::PathBuf

ミュータブルなパス。Stringと同族。

display (Method from Deref)

https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.display

pub fn display(&self) -> Display

Trait fmt::Displayを実装したオブジェクトを返す。

Examples:

use std::path::Path;

let path = Path::new("/tmp/foo.rs");

println!("{}", path.display());

prelude (Module)

Module std::prelude

全てのRustプログラムで自動的にimportされる必要最小限のライブラリ。
std::io::prelude のように、独自のpreludeを持つライブラリも多いそうだ。

result (Module)

Module std::result

Result 型によるエラーハンドリングを行う。

Result (Enum)

Enum std::result::Result

pub enum Result<T, E> {
    Ok(T),
    Err(E),
}

success or failureを表す型。

Variants:

  • Ok(T) … success valueを保持する
  • Err(E) … error valueを保持する

expect (Method)

https://doc.rust-lang.org/std/result/enum.Result.html#method.expect

pub fn expect(self, msg: &str) -> T

  • 値が Err ならメッセージ付きでパニックする

Examples:

let x: Result<u32, &str> = Err("emergency failure");
x.expect("Testing expect"); // panics with `Testing expect: emergency failure`
Run

unwrap (Method)

https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap

pub fn unwrap(self) -> T

  • 値が Err ならパニックする

Examples:

let x: Result<u32, &str> = Err("emergency failure");
x.unwrap(); // panics with `emergency failure`

str (Module)

Module std::str

See also プリミティブ型 str

string (Module)

Module std::string

UTF-8エンコード。

String (Struct)

Struct std::string::String

See also プリミティブ型 str

Examples:

let s = String::new();

let hello1 = String::from("Hello, world!");

let mut hello2 = String::from("Hello, ");

hello2.push('w');
hello2.push_str("orld!");

new (Method)

Method String::new

pub const fn new() -> String

空の String を生成する。 デフォルトでバッファを割り当てないので低コストだが、利用するバッファ量がわかっているならば、 with_capacity メソッドを代わりに使うことを検討せよ。

ToString (Trait)

Trait std::string::ToString

値を String に変換するためのトレイト。
ToString は直接実装すべきではない。Displayを実装することで、 ToString の実装が得られる。

to_string (Require Method)

fn to_string(&self) -> String

Examples:

let i = 5;
let five = String::from("5");

assert_eq!(five, i.to_string());