1つのrustプログラミングチュートリアル
6249 ワード
rustの公式文書を参照して作成https://rinthel.github.io/rust-lang-book-ko/
Rust
https://play.rust-lang.org/>インターネットide環境 https://rinthel.github.io/rust-lang-book-ko/ch01-01-installation.html>>Windowsではwslがベストらしい https://docs.microsoft.com/ko-kr/windows/dev-environment/rust/setup>ビジュアルスタジオや拡張パッケージも使用可能 インストールはコマンドラインとrustupで行います.wsl 2を使用していますが、エラーは発生しません.インストール完了後
コマンドラインに$rustc-versionを入力してバージョン情報を表示すると、正常にインストールされます.
Rust Hello Worldで!しゅつりょく
Cargoコマンドによるファイル管理・実行 ・通過 通過
Rust
C/C++などの低レベルプログラミング言語
利点:他の低レベル言語と同様に、速度が速く、C/C++のメモリ安定性の問題を解決できるなど...
短所:難しい...
Rustについて:
1.メモリの安定性の問題は、所有権の概念によって解決されたようですか?
2.コンパイラはよさそうです.新体操の部分などに長所があるようです
3.gccのようなプリコンパイルプロセスが必要
Rustのインストールと実行(Windows)
コマンドラインに$rustc-versionを入力してバージョン情報を表示すると、正常にインストールされます.
Rust Hello Worldで!しゅつりょく
rustroファイルの作成と実行にはmainの2つの方法があります.これはrsファイルを作成してコンパイルして実行する方法で、残りの1つはcargoを使用して作成します.後者の方法が主に使われているそうです.
1. main.rsに出力
main.rsの作成
fn main(){
println!("Hello, World!");
}
そして端末に次の内容を入力します:Hello,world!出力します.
$ rustc main.rs
$ ./main
Hello, world!
まず、fnでコードセクションを表示すると、関数名がmainとして宣言されていることがわかります.
rust内でmain関数は実行可能なrustプログラム内で最初に実行される部分である.
値とパラメータを返さないmain関数は、{}カッコで囲まれています.
コードの内容から見ると、2つの特殊な点があります.
まず、1つ目はrastがtabをインデントするのではなく、4つの空間をインデントすることです.
2つ目は他の言語とは異なりprintlnの後ろにあります!あります!プラスprintln!暗黙マクロと呼ばれる
後で処理します.
さび病つまりセミコロンを使います.
コンパイル
$ rustc main.rs
$ ls
main main.rs
コンパイルセクションでは、コマンドラインのrustcからmainが表示されます.プライマリコンパイルrsが表示されます.
実際には、コンパイル後にlsコマンドで表示すると、新しいプライマリファイルが表示されます.
./mainコマンドmainを使用します.rsではなくプライマリファイルが実行されていることがわかります.
rustcにコンパイルされたプライマリファイルは実行可能なバイナリファイルであり、rustをインストールする必要はありません.
これは可能です.これをahead-of-timeコンパイル言語と呼びます.
2.Cargoに出力
公式文書によると、Cargoはrustの構築システムとパッケージマネージャだという.なぜなら、ライブラリや依存性など、ドキュメントの内容が優れているため、より便利と考えられるからです.
Cargoはrustのインストール時に自動的にインストールされ、$cargo--versionでインストールミューを表示することができます.
Cargoを使用したプロジェクトの作成
$ cargo new hello_cargo --bin
$ cd hello_cargo
コマンドラインに上記のコマンドを入力すると、作業中のディレクトリにhello cargoというディレクトリと実行可能なバイナリファイルが作成されます.binパラメータは、ライブラリではなくアプリケーションにすることができます.hello cargoというディレクトリに行くと.git, .gitignore, Cargo.toml、srcなどのファイルとディレクトリが作成され、srcディレクトリにmainがあることがわかります.rsという名前のファイルを自動的に生成します.main.rsのコードから見ると,生成と同時に1.main.rsで記述されたhello,worldを出力できるコードが含まれている.
帰ってきたら先にカーゴへtomlファイルをテキストエディタと見なしている場合は、次の内容が表示されます.
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
Cargo.tomlではtomlはCargoの優先パラメータフォーマットと呼ばれるTOML(Tom's Obvious,Minimal Language)形式で記述されている.
最初の行の[package]は、その下の行から優先パラメータ部分であることを示す始点である.
以下は環境設定の内容で、公式ファイルにはname、version、authorsと書いてありますが、なぜ違うのか分かりません.
[dependencies]セクションは、プロジェクトが依存する依存性のリストです.後述する場合があります.
src/main.rsのコードは、Cargoで作成された場合、scrにプライマリコードファイルがあり、cargoとは異なる.toml環境設定など.ビジュアルスタジオでCargoで仕事をしていれば、それをより見やすく見ることができます.
コンパイル
$ cargo build
Compiling hello_cargo v0.1.0 (/home/arhan/projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.55s
hello cargoディレクトリで$cargo buildでコンパイルできます.次に、現在のディレクトリを置き換えます.
target/debug/hello cargoに実行可能ファイルを作成します.実際にはtargetというディレクトリが生成されます.
興味深い点は、3行目の出力がunoptimizedであることです.これは、現在作成されている実行可能ファイルを意味します.
成功しなかった.これについて、再度説明する.
これらのファイルが作成されている場合は、ファイルを実行して出力できます.
$ ./target/debug/hello_cargo
Hello, world!
またはCargo runコマンドで実行できます.
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running 'target/debug/hello_cargo'
Hello, world!
buildとは異なり、build以来ファイルが変更されていないため、Compilingという文は表示されません.
バイナリが実行されていることがわかります.ファイルが変更されたら
$ cargo run
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.33 secs
Running 'target/debug/hello_cargo'
Hello, world!
このように出力します.
Cargoのもう一つのコマンドにはcheckがあり、作成したファイルがコンパイルされているかどうかを確認します.
このコマンドはrunとは異なり、ファイルを実行せず、runコマンドよりも高速です.Error Check Kingを行うためだけであれば
checkコマンドはrunより適切です
$ cargo check
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs
実際には、実行が出力されないことがわかります.
Release
ファイルを最終的に配置するには、ファイルをコンパイルするだけでなく、最適化する必要があります.
これは$cargo build−releaseによって実現できる.
cargo build --release
Compiling hello_cargo v0.1.0 (/home/arhan/projects/hello_cargo)
Finished release [optimized] target(s) in 0.14s
これは最適化されており,以前とは異なりunoptimizedからoptimizedに変わったことがわかる.
--releaseオプションは、/targetでdebugおよびその他のreleaseディレクトリを作成し、最適化されたファイルを保存します.
最適化されたファイルを実行するには、実行後も--値を解放します.実行のみの場合は/target/releaseではありません
/target/debugの最適化されていないファイルを実行します.
cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running 'target/debug/hello_cargo'
Hello, world!
cargo run --release
Finished release [optimized] target(s) in 0.00s
Running './hello_cargo'
Hello, world!
Summary
fn main(){
println!("Hello, World!");
}
cargo new
生成項目;・通過cargo build
コンパイルcargo run
実行--release
最適化Reference
この問題について(1つのrustプログラミングチュートリアル), 我々は、より多くの情報をここで見つけました https://velog.io/@youht7290/러스트-프로그래밍-튜토리얼-1장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol