{"id":20052743,"url":"https://github.com/ryosukecla/rust-playground","last_synced_at":"2025-08-23T00:12:13.469Z","repository":{"id":148437500,"uuid":"115488838","full_name":"RyosukeCla/rust-playground","owner":"RyosukeCla","description":"my rust playground","archived":false,"fork":false,"pushed_at":"2017-12-31T08:13:57.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-26T04:10:53.833Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RyosukeCla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-27T06:21:09.000Z","updated_at":"2017-12-27T06:27:15.000Z","dependencies_parsed_at":"2023-07-18T14:31:00.392Z","dependency_job_id":null,"html_url":"https://github.com/RyosukeCla/rust-playground","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RyosukeCla/rust-playground","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeCla%2Frust-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeCla%2Frust-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeCla%2Frust-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeCla%2Frust-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RyosukeCla","download_url":"https://codeload.github.com/RyosukeCla/rust-playground/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeCla%2Frust-playground/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259940724,"owners_count":22935287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T12:19:04.067Z","updated_at":"2025-06-15T07:33:34.314Z","avatar_url":"https://github.com/RyosukeCla.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Rust Playground\n\n## setup\n```bash\n# install rustup\n$ curl https://sh.rustup.rs -sSf | sh\n$ source $HOME/.cargo/env\n\n# install beta\n$ rustup install beta\n$ rustup default beta\n\n# rls\n$ rustup component add --toolchain=beta rls-preview\n$ rustup component add --toolchain=beta rust-src\n$ rustup component add --toolchain=beta rust-analysis\n\n```\n\n## Cargo\n- `cargo update`: クレートをアップデート。cargo.lockも変わる。\n- `cargo run`: run\n- `cargo build`: build\n\n## Crate\n- 別言語で言うパッケージ、モジュール, ライブラリのこと\n- `rand`は外部クレート\n\n## Tutorial\n### Guess the number\n- `println!(\"hensu: {}\", hensuu)`: よくあるprintln\n- `extern create hoge`: 外部crateを宣言\n- `use hoge::huga;`: hogeのhugaをuse。from impot as的な\n- `extern crate rand; use rand::Rng`: random, `rand::thread_rng().gen_range(1, 101);`\n- `let huga = hage`: よくある変数宣言。defaultでimmutable.\n- `let mut huga = hage`: mutable\n- `io::stdin().read_line(\u0026mut guess)`: return `io::Result instance`\n- `io:Result`: のインスタンスは`expect`をもつ。OkとErrをもつ。\n- `.expect(\"test\")`: はエラーが起きると、panick!してprocessをkick. そして、messageがはかれる\n- `huga.cmp(hage)`: comparableなものに使えるやつ。hugaとhageを比較かな\n- `use std::cmp::Ordering;`: enum型. Less, Equal, Greater\n- rustは強い型システム。そして型推論もある。\n- `shadowing`: `let huga`の後に、`let huga`をできる。新しい定義で隠すことができる。\n- `let huga: u32`: でhugaをu32に静的型付け\n- `u32`: unsigned 32bit integer\n- `guess.trim()`: `\\n`とかスペースとかをtrim\n- `parse()`: u32とかにparseしてくれる\n- `loop`: for loop. break, continue\n\n### Philosopher\n- \u0026strは文字列リテラル。Stringとは違う。\n- `struct`: 構造体\n- `impl`: 実装\n- `self`: 明示的に\n- `Vec\u003c_\u003e`: _は型プレースホルダ。何らかの型のベクトルだが、型のについてはRustが判断する。\n- `into_iter()`: iteratorを作成\n- `iterator.map()`: mapにクロージャを渡す\n- `|p| {}`: クロージャ？\n- `thread::spawn(move || {})`: はクロージャを一つ引数にもつ。新しいスレッドの上でそのクロージャを実行。\n- `move`: 上のクロージャは move というアノテーションが必要。キャプチャする値の所有権がクロージャ内へ移動。pが該当。\n- `式 vs 文`: セミコロンを付けないと、それはreturnと同じ意味になる。つまり、式。\n- `map().collect()`: thread::spawnの返り値つまり、各スレッドへのハンドルをまとめ上げる。\n- `join().unwrap()`: 各スレッド実行が終わるまで実行をブロックする。\n- `Mutex`: 並行処理を制御するための機構\n- `Arc`: Atmic reference count. 複数スレッドからTableを共有するために必要。\n- `lock`: eatが終わるまでlockしたいから、`_huga`にlockを保持させてる。eatが終わると、解放されるので。\n- `table.clone()`: 参照カウントを増やす。スコープの外にでたときに、カウントが減算される。もし、cloneでカウントを増やさなかったら、いつ解放すればいいのかわからなくなってしまうので、これは必要。\n-\n\n## Else\n### keybindings.json\n\n```json\n// 既定値を上書きするには、このファイル内にキー バインドを挿入します\n[{\n  \"key\": \"cmd+r\",\n  \"command\": \"workbench.action.tasks.runTask\",\n  \"args\": \"cargoRun\",\n  \"when\": \"editorTextFocus\"\n}]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryosukecla%2Frust-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryosukecla%2Frust-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryosukecla%2Frust-playground/lists"}