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
標準エラー出力(io::stderr)に書き込む以外はprint!と同じ。
Examples:
eprint!("Error: Could not complete task");
eprintln
println!の標準エラー出力版。
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
標準出力(io::stdout)に書き込む。
改行しないことを除いて println
と同等。
format!
と同じ書式指定が可能。See std::fmt
バッファリングされる可能性があるので、明示的にio::stdout().flush()を実行する必要があるかもしれない。
エラー出力にはeprint!を使うこと。
println
Examples:
println!(); // prints just a newline
println!("hello there!");
println!("format {} arguments", "some");
ops (Module)
オーバーロード可能な演算子。
このモジュールで定義されたトレイトを実装することで、各種演算子のオーバーロードを可能にする。
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)
*v
のように、イミュータブルなデリファレンスの演算に使われる。
ガイド:
path (Module)
クロスプラットフォームなパス操作機能を提供する。
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)
ミュータブルなパス。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)
全てのRustプログラムで自動的にimportされる必要最小限のライブラリ。std::io::prelude
のように、独自のpreludeを持つライブラリも多いそうだ。
result (Module)
Result
型によるエラーハンドリングを行う。
Result (Enum)
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)
See also プリミティブ型 str
string (Module)
UTF-8エンコード。
String (Struct)
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)
pub const fn new() -> String
空の String
を生成する。
デフォルトでバッファを割り当てないので低コストだが、利用するバッファ量がわかっているならば、 with_capacity
メソッドを代わりに使うことを検討せよ。
ToString (Trait)
値を 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());