rust入門
累計閲覧数 53 PV
{}
はplaceholder
println!("x = {}", 1);
// x = 1
println!("x = {}", "a");
// x = a
println!("{}, {}, {}", 1, 2, 3);
// 1, 2, 3
mut
キーワードで定義する
let mut x = 1;
const x: i32 = 2; // 変数束縛
コンパイル後はインライン化される
2 * x --> 2 * 2
fn main() {
let x = 10;
let y = 3;
let mut z;
z = x + y
z = x - y
z = x * y
z = x / y
z = x % y
}
後置修飾
let 変数名: 型
i8
:i32
:i64
:i128
:u8
:u32
:u64
:u128
:f32
f64
let x: bool = true;
「文字」と「文字列」は異なるデータ型であることに注意
文字型はシングルクォートで囲む
let character: char = '0';
定義
let val = (1, 2, 3);
分割代入
let (x, y, z) = val;
// 無視
let (_, y, z) = val;
if condition {
}
&&
||
for i in 0..10 {
println!("i = {}.", i);
}
let mut i = 0;
while i < 10 {
println!("i = {}.", i);
i += 1;
}
let mut i = 0;
loop {
i += 1;
if i == 9 {
break;
}
}
返り値
fn add(x: i32, y: i32) -> i32 {
x + y // セミコロンがないことがポイント。セミコロンがある場合は戻り値として認識されない
}
fn add2(x: i32, y: i32) -> i32 {
return x + y; // もしくは`return ;`をつける
}
fn main() {
let z = add(10, 5);
println!("10 + 5 = {}", z);
}
static PI: f64 = 3.14;
静的変数を可変にしたい場合はmut
を付ける
static mut PI: f64 = 3.14;
静的可変変数を利用する場合はunsafe
ブロックで囲む。
すなわち、安全ではないコードであることを明示的にする。
unsafe {
2.0 * PI * radius
}
macro_rule! マクロ名 {
マクロの中身
}
変数の値に依存しない型固有の操作
型::メソッド名();
let ポインタ変数名; *const 型名 = &変数名;
let mut 変数名: *const 型 = &参照先の変数名;
let 変数名: Box< 型 > = Box:new(値);
let 変数名 = [初期値;大きさ];
多次元配列
let 変数名 = [[初期値; 大きさ2]; 大きさ1];
宣言
struct Human {
age: i32,
}
メソッドの実装
impl Human {
fn say(&self) {
println!("Hello {}", self.age);
}
}
コンストラクタ
impl Human {
new (age: i32) -> Human {
Human{age: age}
}
}
let human = Human::new(20);
let mut vec: Vec<i32> = Vec::new();
vec.push(1);
vec.remove(0);
println!("|vec| = {}", vec.len());
println!("vec elements = {:?}", vec);
macroによる定義
let mut vec: Vec<i32> = vec![1, 3, 5, 7, 9];
for i in 0..vec.len() {
vec[i] = vec[i] * 2; // indexでアクセス可能
}
メモリ管理で置きうるバグ