Rumah >hujung hadapan web >tutorial js >Tutorial Rust: Pengenalan kepada Rust untuk JavaScript Devs
sorotan utama:
async/await
rustc
, mengintegrasikan dengan lancar dengan NPM dan Webpack. wasm-pack
wasm-bindgen
Walaupun secara konseptual berbeza dari JavaScript, karat berkongsi persamaan yang mengejutkan.
Persamaan:
Kedua -dua bahasa menampilkan pengurusan pakej moden: NPM untuk JavaScript dan Cargo for Rust (menggunakan
bukan). Penciptaan Projek (Cargo.toml
package.json
cargo init
JavaScript: cargo run
Rust:
<code class="language-javascript">let staff = [ {name: "George", money: 0}, {name: "Lea", money: 500000}, ]; let salary = 1000; staff.forEach( (employee) => { employee.money += salary; } );</code>
pemusnahan objek juga mendapati selari:
<code class="language-rust">let salary = 1000; staff.iter_mut().for_each( |employee| { employee.money += salary; } );</code>JavaScript:
Rust:
<code class="language-javascript">let point = { x: 5, y: 10 }; let {x,y} = point;</code>
(perhatikan jenis eksplisit dalam karat). Ciri -ciri yang dikongsi bersama termasuk
, penciptaan array mudah (<code class="language-rust">let point = Point { x: 5, y: 10 }; let Point { x, y } = point;</code>), organisasi kod modular, dan sokongan literal rentetan unicode.
Point
async/await
Perbezaan: let array = [1,2,3];
sifat yang disusun Rust (menggunakan rustc
) berbeza dengan pelaksanaan ditafsirkan JavaScript, yang umumnya mengakibatkan prestasi unggul. Kargo mengendalikan kompilasi, manakala Webpack mengintegrasikan proses ini dengan perintah NPM run build
.
Kuat Kuat Kuat Menguatkuasakan Pencocokan Jenis Pada Masa Penyusunan, Mencegah Kesalahan Runtime -Similar to TypeScript. Ketat ini, sementara pada mulanya mencabar, menyumbang kepada kod yang lebih bersih dan lebih dipercayai.
Pencocokan corak Rust (match
) menawarkan alternatif yang lebih elegan untuk rantai if-else if
yang panjang:
javascript (if-else if):
<code class="language-javascript">let staff = [ {name: "George", money: 0}, {name: "Lea", money: 500000}, ]; let salary = 1000; staff.forEach( (employee) => { employee.money += salary; } );</code>
karat (padanan):
<code class="language-rust">let salary = 1000; staff.iter_mut().for_each( |employee| { employee.money += salary; } );</code>Walau bagaimanapun, sistem jenis ketat Rust pada mulanya dapat merasa rumit. Pendekatan yang ketat ini, sambil menuntut, meningkatkan kebolehpercayaan kod.
Bermula dengan karat
mari kita bina "Hello, World!" Permohonan dalam karat untuk penyemak imbas.
Alat:
rustc
. Sahkan pemasangan dengan rustup
dan cargo --version
. rustup --version
wasm-pack
). wasm-pack --version
Kod karat (lib.rs
<code class="language-javascript">let point = { x: 5, y: 10 }; let {x,y} = point;</code>cargo.toml:
[dependencies]
dan tambahkan ini ke bahagian
<code class="language-rust">let point = Point { x: 5, y: 10 }; let Point { x, y } = point;</code>
[lib]
disusun dengan
<code class="language-javascript">if ( x == 1) { // ... } else if ( x == 2 ) { // ... } else if ( x == 3 || x == 4 ) { // ... } // ...</code>
wasm-pack build
JavaScript Integration (
index.js
Sediakan Webpack (menggunakan ) seperti yang diterangkan dalam artikel asal. Running
<code class="language-rust">match x { 1 => { /* Do something if x == 1 */}, 2 => { /* Do something if x == 2 */}, 3 | 4 => { /* Do something if x == 3 || x == 4 */}, 5...10 => { /* Do something if x >= 5 && x <= 10 */}, _ => { /* Catch all other cases */ } }</code>
wasm-pack-plugin
(Selebihnya respons akan terus memrasiikan bahagian -bahagian input yang tersisa, termasuk contoh simulator jangkitan Corona, hasil penanda aras, kesimpulan, sumber selanjutnya, dan Soalan Lazim, mengekalkan struktur dan penempatan imej yang sama.) npm run serve
Atas ialah kandungan terperinci Tutorial Rust: Pengenalan kepada Rust untuk JavaScript Devs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!