Rust
概要 スレッド終了時に実行結果を受け取るには「join().unwrap_or(...)」を使う。 プログラム例 本スレッドから別スレッドに数値を渡す。 別スレッドでは、10000÷数値 の計算式の文字列を作る。 これを本スレッドに渡す。 use std::thread::{spawn, sleep}; …
概要 前回、ナベアツ処理を記述する際には「for」文で繰り返し処理を行った。 範囲(1..=99)に対して「map」を使えば for 文が不要になるのでは、という試み。 for, loop, while を使わずに、ナベアツを実現してみよう。 仕様 1 からカウントアップしていく。…
概要 配列の中身をひとつずつ取り出すには iter() を使う。 取り出した結果を新しい配列にまとめるには cloned(), collect() を使う。 取り出したい中身を限定するには filter() を使う。 取り出した中身に変更を加えるには map() を使う。 プログラム例 配…
概要 同じ型の変数を大量に作る代わりに、配列を使うと便利。 配列には固定配列と伸長可能な配列の2種類がある。 for文で今何番目を処理しているか知りたいときは「iter().enumerate()」を使う。 配列を使う場面 5つの変数に入った数値を足し合わせるプロ…
概要 文字列の操作方法を紹介する。 文字列の長さを求める 文字列のまま操作する場合は chars().count() 文字配列について操作する場合は len() fn main() { let 文字列 = "あいうえおかきくけこさしすせそ"; println!("{}", 文字列.chars().count()); let …
概要 文字列のn番目にアクセスするには nth(数) を使う。 長い文字列ほどアクセスに時間がかかる。 char の配列にするという手もある。 プログラム例 文字列「あいうえおかきくけこさしすせそ」について。 10番目の文字を表示する。 fn main() { let 文字列…
概要 スレッドに終了命令を送るには channel を使う。 受信の有無を確認するには try_recv を使う。 受信内容を確認するには match を使う。 プログラム例 本スレッドで1秒待機している間に、別スレッドはカウンタを回す。 本スレッドは別スレッドを停止さ…
概要 別のスレッドにデータを送受信するには channel を使う。 データを送信するには send を使う。 データを受信するには recv を使う。 プログラム例 1から50までの和をスレッド1で計算する。 51から100までの和をスレッド2で計算する。 本スレッドでそれ…
概要 複数の処理を並行して実行するにはスレッドを生成する。 スレッドを生成するには「spawn」を使う。 スレッドの終了を待つには「join」を使う。 処理をある時間だけ停止させるには「sleep」を使う。 プログラム例 別スレッドで0.5秒間隔で5回「▲」と表示…
概要 関数を作ると、処理に名前をつけることができる。 関数を作成するには「fn」を使う。 入れる値と出る値の種類(型)を指定する必要がある。 プログラム例 関数の名前は「ワンワン」とする。 関数に数値(i32)を渡すと、文字列(String)が出てくる。 …
概要 「if」「else」でプログラムの流れを分岐できる。 「match」よりも単純な分岐に向いている。 プログラム例 持ち金が5000円以上なら「n円も持っている」と表示する。 持ち金が5000円より少なければ「n円しか持っていない」と表示する。 fn main() { le…
概要 2010年ごろに流行した「世界のナベアツ」のネタを Rust で再現する。 分岐の「match」や「if」、繰り返しの「for」を使えばできるはず。 以下の仕様を満たすようなプログラムを Rust で組んでみよう。 仕様 1 からカウントアップしていく。「1」「2」 3…
概要 処理の繰り返し(ループ)をするには for を使う。 繰り返し回数が読めないときは loop を使う。 プログラム例 1 から 10000 までの数の合計を表示する。 fn main() { let mut 合計 = 0; // 後で変更されるので mut が必要 for 回数 in 1..=10000 { 合…
概要 数値で分岐するには match を使う。 数値の範囲で処理を分けたい場合は「..=」を使う。 いくつかの数値の場合に対応する場合は「|」を使う。 プログラム例 文字列の入力を要求する。 0~59 なら「不合格」を表示する。 60~99 なら「合格」を表示する。…
概要 分岐するには match を使う。 文字列を比較対象にするには as_str を使う。 コード 入力されたのが「いぬ」なら「ワン」と出力する。 入力されたのが「ねこ」なら「ニャー」と出力する。 入力されたのが「ひと」なら「オギャア」と出力する。 それ以外…
概要 文字列を数値に変換するには parse を使う。 単純な実装だと、変換失敗時にプログラムが落ちる。 変換失敗時の処理を書くには match を使う。 コード 文字列の入力を要求し、99 を掛け算する。 use std::io::*; fn main() { let 入力 = コンソール入力(…
概要 文字列をコンソールから入力するには、stdin() を使う。 1行ではできないので、関数にまとめる。 プログラム例 標準入力から文字列を受け取る関数「コンソール入力」を作成する。 use std::io::*; // stdinを使うのに必要 fn コンソール入力() -> Stri…
概要 文字列の連結は、4種類くらいやり方がある。 編集可能な文字列に対して「+=」で連結できる。 シンプルな方法もある。 プログラム例 文字列「ABCD」と「EFG」と「HIJK」を連結して、それを表示する。 fn main() { let mut 連結 = String::from("ABCD");…
概要 プログラムを動かしながら変数の中身を見ることができると便利。 このページの手順を踏んでいることが前提 日本語など半角英数字以外を表示するためには、ひと工夫が必要。 デバッグ プログラムのミスを治すことを、虫(バグ)取りにたとえて「デバッグ…
概要 数値を変数(記憶する場所)に保持するには「let」を用いる。 保持した値は、後で計算に使うことができる。 変数の名前には、日本語も使える。 プログラム例 変数を使って計算し、結果を表示する。 fn main(){ let ア = 10; // └ 10 を「ア」に入れる l…
概要 足し算(+), 引き算(-), 掛け算(*), 割り算(/), 割った余り(%) を計算できる。 割り算は整数部分しか計算しない。 小数点以下を計算する方法もある。 プログラム例 2 + 3 = 5 2 - 3 = -1 2 × 3 = 6 2 ÷ 3 = 0 (小数点以下は切り捨てる) 2 を 3 で割っ…
概要 文字列の出力には「println」を使う。 文字列も数値も出力できる。 プログラム例 「ABCDE」を画面に出力してみる。 fn main() { println!("{}", "ABCDE"); } 数値や計算結果も出力できる。1 + 2 = 3 fn main() { println!("{}", 1 + 2); } 日本語や絵文…
概要 プログラミング言語 Rust でプログラムを書くための下準備 Rust の紹介 Rust の利点 実行速度が速い。 消費するメモリが少ない。 メモリアクセス違反が起こりにくいので安全。 Rust の欠点 プログラムを動かすまでに覚えることが多い。 厳密なメモリ管…
概要 プログラミング言語「Rust」を学習した際の記録 完全な入門者に向けた表現を心掛けた。 書けるようになるまでの早さが優先、内容は網羅しない。 はじめに Rust の導入 入門 文字列や数値の出力 println! 基本的な計算 + - * / % 変数に値を保持する let…