ICT-STARTのホームページ

パソコンなどの話題を書いていきます。


Rust Language入門1

こちらのページでインストール方法を紹介していますRust Languageの使い方をまとめてみます。途中で挫折するかもしれません。

基本的な構文

use std;

 

// 関数を定義

fn add(x: int, y: int) -> int{

    ret x + y;

}

fn main() {

    let a = 5,b = 10;

    // #fmtで出力内容の整形

    std::io::println(#fmt("a + b = %d", add(a, b)));

}

実行結果

a + b = 15

まず基本の構文です。"fn"は関数を定義します。int型の引数を二つ持ち合計した値を戻り値にしています。

プログラムは実行されるとmain関数から実行されます。

use std;

 

fn add(x: int, y: int) -> int{

    ret x + y;

}

fn main() {

    let a = 10,b = 20;

    let x: int = add(a, b);

    std::io::println(#fmt("a + b = %d", x));

}

変数xに大して明示的に型を指定することもできます。コロンをはさんでint型を指定しています。

BINDの問題?

use std;

 

fn add(x: int, y: int) -> int{

    ret x + y;

}

type single_param_fn = fn(int) -> int;

fn main() {

    let add4: single_param_fn = bind add(4, _);

    std::io::println(#fmt("bing %d", add4(10)));

}

BINDは関数にデフォルトの引数を設定し再定義することができます。

ですが上記のソースをコンパイルは出来るのですが、実行すると以下のようなエラーになります。

 

bing 14
rust: fatal, 'leaked memory in rust main loop (1 objects)' failed, ./src/rt/memory_region.cpp:158 1 objects
中止

ちょっと問題が分からないため保留です。

繰り返し命令

use std;

 

fn main() {

    let i = 0;

    std::io::print("i = ");

    // iが5より小さい間

    while i < 5 {

        std::io::print(#fmt("%d,", i));

        i = i + 1;

    }

 

    std::io::println("");

 

    let v: [int] = [0, 1, 2, 3, 4];

    std::io::print("e = ");

    // vの要素全てに対して

    for e: int in v {

        std::io::print(#fmt("%d,", e));

    }

 

    std::io::println("");

 

    let ary: [str] = ["A""B""C""D""E"];

    std::io::print("ary = ");

    // aryの要素全てに対して

    for s: str in ary {

        std::io::print(s + ",");

    }

    std::io::println("");

}

実行結果

i = 0,1,2,3,4,
e = 0,1,2,3,4,
ary = A,B,C,D,E,

while文とfor文の使い方を記述しました。for(;;)の使用方法を探していますがちょっと分かっていません。

値の判定

use std;

 

fn howMany(x:int){

    std::io::print(#fmt("%d => ", x));

    // xの値によって分岐する。

    // n1 to n2 によって範囲判定も可能

    alt x {

      0       { std::io::println("nothing"); }

      1 | 2   { std::io::println("a few"); }

      3 to 10 { std::io::println("sevral"); }

      _       { std::io::println("many"); }

    }

}

 

fn main() {

    howMany(0);

    howMany(2);

    howMany(3);

    howMany(10);

    howMany(11);

    howMany(-1);

}

実行結果

0 => nothing
2 => a few
3 => sevral
10 => sevral
11 => many
-1 => many

上記は条件分岐の例です。

xの値が

のそれぞれ場合という上見聞記を行っています。この場合-1はそれ以外に判定されていますので別の条件判定が必要になリます。

トップへ

ブログへ

製作物

Java系

簡易Webサーバー

自然言語処理・全文検索

トップ

Rust Language

Kotlin

 

Androidアプリ

HandyReader : C/C++,Java等のソースコードに色付けをしてくれるアプリです。