Online Rust Compiler

Write, compile, run, and debug Rust code online in a full-featured browser IDE. Work with multiple files, save your workspace, and share or collaborate in real time.

🚀 252,702 合計実行 (135 今月)
出力

Rustのコーディングチャレンジで練習

このエディタで実践的な問題を解こう。サンプルテストを実行し、提出してAIコードレビューを受けられます。

すべてのRustチャレンジ
簡単

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

学べること 算術戻り値
BeginnerLearning-pathVariables
簡単

Distance Between Points

Compute the straight-line distance between two points.

学べること 三平方の定理平方根
BeginnerFunctionsLearning-pathmath
簡単

Days in a Month

Return how many days a month has, including leap years.

学べること 暦の規則補助関数
BeginnerConditionsFunctionsLearning-path
簡単

Average of Three

Average three whole numbers.

学べること 算術除算
BeginnerLearning-pathVariables
簡単

2つのベクトルの内積

2つのベクトルを要素ごとに掛けて合計します。すべてのニューロンの中心となる計算です。

学べること ベクトル内積
ニューラルネットワークai機械学習
簡単

Largest of Three

Pick the largest of three numbers without a built-in max.

学べること 比較条件の組み合わせ
BeginnerConditionsLearning-path
簡単

素数判定

数が素数かどうかを判定してください。

学べること 割り切れるかの判定ループの最適化
BeginnerLoopsNumbersStudent-beginner
簡単

Number Triangle

Build a triangle of increasing numbers.

学べること 長くなる行行をまたぐカウンター
BeginnerLearning-pathNested-loopsPatterns
簡単

アームストロング数

数が、その各桁の値を桁数乗して合計した値と等しいかどうかを判定します。

学べること 桁の取り出し累乗
BeginnerNumbersStudent-beginner
簡単

Row Sums

Add up every row of a grid.

学べること 2 次元リスト入れ子のループ
BeginnerGridsLearning-path
簡単

Min and Max Together

Find the smallest and largest value in one pass.

学べること 1 回の走査複数の戻り値
ArraysBeginnerFunctionsLearning-path
簡単

Count Pairs With a Sum

Count pairs of positions whose values add up to a target.

学べること インデックスの組二重カウントの回避
ArraysBeginnerLearning-pathNested-loops

🦀 このRustオンライン実行ツールについて

CodeUtility Rust Executor は、ブラウザ上でRustコードをそのまま書いて実行できるツールです。 インストールやツールチェーンの準備、ローカル環境は不要です。安全なサンドボックス上で動作し、 実際のRustコンパイラ 1.70、1.72、1.73、1.74 に対応しています。

本ツールは本物の rustc コンパイラでクラウド上でコンパイル・実行するため、 正確で一貫した結果が得られます。変数、所有権、借用、パターンマッチ、トレイト、ジェネリクスなど モダンなRustの機能を気軽に試せます。

Cargoのインストールやローカルのセットアップなしで、特にメモリ安全性、エラーハンドリング、並行処理など Rustのコア概念を学ぶのに最適です。すべてが数秒でブラウザ内で動作します。

単なるコードランナーではありません

同じ実行環境で、複数ファイル対応エディター、分離された実行ターミナル、ランタイム別ライブラリ、永続ワークスペース、共有、リアルタイム共同作業を利用できます。

この実行環境の使い方

ランタイムを選択し、ファイルを開くか作成してコードを記述し、[実行]を選択します。出力はターミナルに表示されます。サインインしたユーザーは、ワークスペースにファイルを保存し、ライブラリをインストールして、共有を通じて共同作業できます。

  1. バージョンを選択して現在のファイルを編集するか、ワークスペース内の別のファイルを開きます。
  2. コードを実行し、求められた場合はターミナルに入力して、保存された実行履歴を確認します。
  3. 複数のコードスニペットが必要な作業では、ライブラリ、ワークスペースツール、共有、チャットを利用します。

💡 Rustの基本と、上のエディタで試せるサンプル

1. 変数と定数の宣言

変数は let、定数は const、可変変数は mut を使います。

let x = 10;
let pi: f64 = 3.14;
let name = "Alice";
let is_active = true;

const MAX_USERS: u32 = 100;

2. 条件分岐(if / match)

条件分岐は if、パターンマッチには match を使います。

let x = 2;
if x == 1 {
    println!("One");
} else if x == 2 {
    println!("Two");
} else {
    println!("Other");
}

match x {
    1 => println!("One"),
    2 => println!("Two"),
    _ => println!("Other"),
}

3. ループ

Rust は for、while、無限 loop をサポートしています。

for i in 0..3 {
    println!("{}", i);
}

let mut n = 3;
while n > 0 {
    println!("{}", n);
    n -= 1;
}

4. 配列

Rustの固定長配列は角括弧で表します。ビューにはスライスを使います。

let nums = [10, 20, 30];
println!("{}", nums[1]);

5. ベクタ(可変長配列)

Vec は可変長配列に使います。

let mut fruits = vec!["apple", "banana"];
fruits.push("cherry");
fruits.pop();

for fruit in &fruits {
    println!("{}", fruit);
}

6. コンソール入出力

出力は println!、入力は std::io を使います。

use std::io;

let mut name = String::new();
println!("Enter your name:");
io::stdin().read_line(&mut name).unwrap();
println!("Hello, {}", name.trim());

7. 関数

関数は fn を使い、-> で戻り値の型を指定します。

fn greet(name: &str) -> String {
    format!("Hello, {}", name)
}

println!("{}", greet("Alice"));

8. HashMap

キーと値のデータには std::collections::HashMap を使います。

use std::collections::HashMap;

let mut person = HashMap::new();
person.insert("name", "Bob");
println!("{}", person["name"])

9. エラー処理

Rustでは Result と match(または unwrap())でエラーを扱います。

fn fail() -> Result<(), String> {
    Err("Something went wrong".to_string())
}

match fail() {
    Ok(_) => println!("Success"),
    Err(e) => println!("{}", e),
}

10. ファイルI/O

std::fs でファイルの読み書きを行います。

use std::fs;

fs::write("file.txt", "Hello File").unwrap();
let content = fs::read_to_string("file.txt").unwrap();
println!("{}", content);

11. 文字列操作

Rustの文字列はヒープに確保され、多くのメソッドが使えます。

let mut text = String::from(" Hello Rust ");
println!("{}", text.trim());
println!("{}", text.to_uppercase());
text = text.replace("Hello", "Hi");
println!("{}", text);

12. 構造体とメソッド

データ型には struct、メソッド定義には impl を使います。

struct Person {
    name: String,
}

impl Person {
    fn greet(&self) -> String {
        format!("Hi, I'm {}", self.name)
    }
}

let p = Person { name: "Alice".to_string() };
println!("{}", p.greet());

13. 参照と借用

値の借用には &、可変参照には &mut を使います。

fn update(x: &mut i32) {
    *x += 1;
}

let mut value = 10;
update(&mut value);
println!("{}", value);