diff --git a/docs/basic/advanced-traits.md b/docs/basic/advanced-traits.md index a46ab19c..23a12fcc 100644 --- a/docs/basic/advanced-traits.md +++ b/docs/basic/advanced-traits.md @@ -66,7 +66,7 @@ impl crate::calculation_spec::Area for Square { } ``` -Bisa dilihat pada kode di atas, deklarasi struct beserta property memiliki visibility publik. Idealnya, saat sturct tersebut digunakan di fungsi `main` nantinya tidak akan ada error terkait visibility akses. +Bisa dilihat pada kode di atas, deklarasi struct beserta property memiliki visibility publik. Idealnya, saat struct tersebut digunakan di fungsi `main` nantinya tidak akan ada error terkait visibility akses. Selanjutnya, pada file `main.rs` siapkan kode yang isinya registrasi module `calculate_spec` dan `two_dimensional`, juga definisi fungsi `main` dengan isi statement pembuatan 2 variabel object untuk masing-masing tipe data struct `Circle` dan `Square`. diff --git a/docs/basic/datetime.md b/docs/basic/datetime.md index 0c1a861e..1f63a7f2 100644 --- a/docs/basic/datetime.md +++ b/docs/basic/datetime.md @@ -10,7 +10,7 @@ Rust menyediakan cukup banyak API untuk keperluan pengolahan datetime, tersedia ## A.52.1. Persiapan -Sebelum memulai pembelajaran, siapkan satu project baru, kemudian tambahkan care `crono` dalam `Cargo.toml`. +Sebelum memulai pembelajaran, siapkan satu project baru, kemudian tambahkan crate `chrono` dalam `Cargo.toml`. ```toml [package] diff --git a/docs/basic/file-path-directory.md b/docs/basic/file-path-directory.md index fd542384..b0cafab0 100644 --- a/docs/basic/file-path-directory.md +++ b/docs/basic/file-path-directory.md @@ -143,7 +143,7 @@ Fungsi `fs::create_dir` digunakan untuk membuat folder. Contoh penerapannya suda ### ◉ Menulis konten file (`fs::write`) -Fungsi `fs::write` digunakan untuk membuat folder. Contoh penerapan: +Fungsi `fs::write` digunakan untuk menulis konten ke file. Contoh penerapan: ```rust let path = Path::new("./files").join("target.txt"); diff --git a/docs/basic/lifetime.md b/docs/basic/lifetime.md index fff7dcdc..56402342 100644 --- a/docs/basic/lifetime.md +++ b/docs/basic/lifetime.md @@ -190,7 +190,7 @@ Lifetime dituliskan dengan notasi `'nama_lifetime`. Dengan notasi tersebut, kita > Lifetime dan block label memiliki bentuk literal yang sama, keduanya diawali tanda kutip `'`. Yang membedakan hanya pada tempat di mana syntax tersebut ditulis. -Kegunaan dari lifetime annotation adalah untuk menginformasikan compiler agar reference tidak langsung didealokasikan setelah eksekusi block selesai. Agar lebih jelas mari kita langsung terapkan saja pada fungsi `get_number` yang sudah ditulis. Silakan tambahkan lifetime dengan nama bebas. Di sini penulis gunakan `'my_lifetime`.nnnn +Kegunaan dari lifetime annotation adalah untuk menginformasikan compiler agar reference tidak langsung didealokasikan setelah eksekusi block selesai. Agar lebih jelas mari kita langsung terapkan saja pada fungsi `get_number` yang sudah ditulis. Silakan tambahkan lifetime dengan nama bebas. Di sini penulis gunakan `'my_lifetime`. ```rust fn get_number() -> &'my_lifetime i32 { diff --git a/docs/basic/module-basic.md b/docs/basic/module-basic.md index 5abf19e3..08867588 100644 --- a/docs/basic/module-basic.md +++ b/docs/basic/module-basic.md @@ -405,7 +405,7 @@ Hingga pembahasan pada praktik module `path` attribute, kita telah belajar pener ## A.20.7. Pembahasan lanjutan -Pembahasan topik module dilanjutkan pada beberapa chapter lain. Pada chapter [Module System ➜ Inline Module](/basic/module-inline) kita akan bahas secara mendetail mengenai apa itu inline module dan perbedaannya dibanding normal module. Lalu nantinya di cahpter [Module System ➜ Visibility & Privacy](/basic/visibility-privacy) akan dibahas secara lengkap mengenai keyword `pub` dan kontrol privasi lainnya di pemrograman Rust. +Pembahasan topik module dilanjutkan pada beberapa chapter lain. Pada chapter [Module System ➜ Inline Module](/basic/module-inline) kita akan bahas secara mendetail mengenai apa itu inline module dan perbedaannya dibanding normal module. Lalu nantinya di chapter [Module System ➜ Visibility & Privacy](/basic/visibility-privacy) akan dibahas secara lengkap mengenai keyword `pub` dan kontrol privasi lainnya di pemrograman Rust. --- diff --git a/docs/basic/module-inline.md b/docs/basic/module-inline.md index 1e23dd13..13f854f6 100644 --- a/docs/basic/module-inline.md +++ b/docs/basic/module-inline.md @@ -237,7 +237,7 @@ Pada contoh ke-2 ini modul `utilities` didefinisikan menggunakan cara biasa, sed Jalankan program untuk melihat hasilnya. -Pada kode di atas, `path` yang digunakan bukan `utilities/random.rs` melainkan `random.rs`, hail ini dikarenakan `path` attribute dipanggil **di dalam module `utilities`**, menjadikan current path pada blok kode tersebut menjadi `utilities/`. +Pada kode di atas, `path` yang digunakan bukan `utilities/random.rs` melainkan `random.rs`, hal ini dikarenakan `path` attribute dipanggil **di dalam module `utilities`**, menjadikan current path pada blok kode tersebut menjadi `utilities/`. Silakan coba ubah isi `path` attribute menjadi `utilities/random.rs`, hasilnya adalah error. Rust akan menggunakan gabungan dari current path (`utilities/`) dan path pada `path` attribute (`utilities/random.rs`) dalam lookup, jadinya yang di-lookup adalah `utilities/utilities/random.rs`, dan hasilnya error karena tidak ada file di sana. diff --git a/docs/basic/operator-tanda-tanya.md b/docs/basic/operator-tanda-tanya.md index cae2d976..35a1e684 100644 --- a/docs/basic/operator-tanda-tanya.md +++ b/docs/basic/operator-tanda-tanya.md @@ -104,14 +104,12 @@ Sekilas perbandingan fungsi sebelum dan setelah dimodifikasi bisa dilihat pada d Implementasi operator `?` dilakukan dengan cukup menuliskannya setelah memanggil fungsi yang memiliki tipe nilai balik `Result` (atau `Option`) yang pada contoh ini adalah fungsi `divider()`. Operator tersebut meng-unwrap nilai balik fungsi `divider()` yang bertipe `Result` dengan ketentuan: -- Jila nilai balik `Result` berisi nilai `Ok(f64)`, maka nilai `f64` dikembalikan. +- Jika nilai balik `Result` berisi nilai `Ok(f64)`, maka nilai `f64` dikembalikan. - Statement `let r1 = divider(10.0, 5.0)?;`, variabel `r1` berisi nilai bertipe `f64`. - Statement `let r3 = divider(10.0, 2.0)?;`, variabel `r3` berisi nilai bertipe `f64`. -- Jila nilai balik `Result` berisi nilai `Err(&'static str)`, maka nilai `&'static str` dikembalikan. - - - Statement `let r2 = divider(10.0, 0.0)?;`, variabel `r2` berisi nilai bertipe `&'static str`. +- Jika nilai balik `Result` berisi nilai `Err(&'static str)`, maka statement `let r2 = divider(10.0, 0.0)?;` menghasilkan `Err`, yang menyebabkan fungsi segera berhenti (early return) dan error dikembalikan sebagai nilai balik fungsi. Variabel `r2` tidak pernah terisi. Sampai sini semoga cukup jelas. diff --git a/docs/basic/operator.md b/docs/basic/operator.md index 28e7ccce..06f921b2 100644 --- a/docs/basic/operator.md +++ b/docs/basic/operator.md @@ -93,7 +93,7 @@ println!("res_one: {res_one}"); let res_two = number_a != number_b; println!("res_two: {res_two}"); -// output => res_one: true +// output => res_two: true ``` ## A.8.3. Operator negasi diff --git a/docs/basic/pointer-references.md b/docs/basic/pointer-references.md index 3dcc8b4d..160d361c 100644 --- a/docs/basic/pointer-references.md +++ b/docs/basic/pointer-references.md @@ -175,7 +175,7 @@ Ok, lanjut. Per sekarang, reference variabel `number_one` dan `number_two` adala ### ◉ Contoh ke-1 -Contoh penerapannya bisa kita lihat pada chapter [Pointer & References](/basic/pointer-references#a315-karakteristik-pointer--reference) ini, di situ bisa dilihat ada variabel mutable `number` dan `pointer_number` yang reference-nya adalah sama dengan variabel `number`. Ketika underlying value `pointer_number` diubah (dari `24` ke `12`), isi data variabel `number` juga berubah. +Contoh penerapannya bisa kita lihat pada chapter [Pointer & References](/basic/pointer-references#a334-mutable-references-operator-mut), di situ bisa dilihat ada variabel mutable `number` dan `pointer_number` yang reference-nya adalah sama dengan variabel `number`. Ketika underlying value `pointer_number` diubah (dari `24` ke `12`), isi data variabel `number` juga berubah. ![Pointer & reference](img/pointer-references-4.png) diff --git a/docs/basic/slice-memory-management.md b/docs/basic/slice-memory-management.md index b649fc0e..370627ad 100644 --- a/docs/basic/slice-memory-management.md +++ b/docs/basic/slice-memory-management.md @@ -4,7 +4,7 @@ title: A.45. Slice Memory Management sidebar_label: A.45. Slice Memory Management --- -Kita telah mempelajari tipe data [Array](/basic/array) dan [Vector](/basic/vector), serta sudah beberapa kali menggunakan tipe data string slice (`String`). 3 tipe data itu memiliki kemiripan, yaitu kesemuanya termasuk dalam kategori tipe data slice. +Kita telah mempelajari tipe data [Array](/basic/array) dan [Vector](/basic/vector), serta sudah beberapa kali menggunakan tipe data `String`. Ketiga tipe data tersebut bisa menghasilkan slice via operasi borrowing. > Ciri khas dari tipe data yang termasuk dalam kategori slice adalah jika diakses reference-nya menghasilkan data bertipe `&[T]` yang mana `T` adalah tipe data elemen. diff --git a/docs/basic/slice.md b/docs/basic/slice.md index 8c68e6d2..a510a52b 100644 --- a/docs/basic/slice.md +++ b/docs/basic/slice.md @@ -164,7 +164,7 @@ let data = ["a", "b", "c", "d"]; ```rust let sliced_data = &data[..]; println!("{:?}", sliced_data); - // output => ["A", "b", "c", "d"] + // output => ["a", "b", "c", "d"] ``` > Perihal apa itu borrowing dan kegunaan dari operator `&` yang ditulis di awal variabel dibahas lebih detail pada chapter [Pointer & References](/basic/pointer-references). diff --git a/docs/basic/string-slice-vs-string-literal.md b/docs/basic/string-slice-vs-string-literal.md index 17cfcf0c..12d56af0 100644 --- a/docs/basic/string-slice-vs-string-literal.md +++ b/docs/basic/string-slice-vs-string-literal.md @@ -55,7 +55,7 @@ String literal hanya bisa direpresentasikan dalam bentuk reference `&str` (point Tipe `&str` termasuk kategori tipe data yang **unowned** atau reference tanpa owner (atau boleh juga diartikan sebagai tipe data yang owner-nya adalah program). -Rust menjamin data string literal selalu valid. Kita juga bisa menentukan lifetime-nya secara eksplisit jike diperlukan, contohnya pada tipe `&'static str`. +Rust menjamin data string literal selalu valid. Kita juga bisa menentukan lifetime-nya secara eksplisit jika diperlukan, contohnya pada tipe `&'static str`. Cara termudah membuat `&str` adalah menggunakan string literal. diff --git a/docs/basic/traits.md b/docs/basic/traits.md index 457cb1bd..4c02ccac 100644 --- a/docs/basic/traits.md +++ b/docs/basic/traits.md @@ -69,12 +69,12 @@ Bagaimana dengan custom type yang kita buat sendiri? Misalnya struct. ```rust fn main() { - let circle_one = Circle{raidus: 6}; + let circle_one = Circle{radius: 6}; println!("{:?}", circle_one); } struct Circle { - raidus: i32, + radius: i32, } ``` @@ -106,17 +106,17 @@ Di bawah ini adalah contoh cara implementasi trait. ```rust struct Circle { - raidus: i32, + radius: i32, } impl std::fmt::Debug for Circle { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Circle radius: {}", self.raidus) + write!(f, "Circle radius: {}", self.radius) } } fn main() { - let circle_one = Circle{raidus: 6}; + let circle_one = Circle{radius: 6}; println!("{:?}", circle_one); } ``` @@ -164,7 +164,7 @@ Di contoh, format `Circle radius: {}` digunakan. Dengan ini nantinya saat printi ```rust impl std::fmt::Debug for Circle { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Circle radius: {}", self.raidus) + write!(f, "Circle radius: {}", self.radius) } } ``` @@ -182,7 +182,7 @@ Notasi penulisan macro `write`: write!(variabel_tujuan, data_yang_ingin_di_print, arg1, arg2, ...); // contoh penerapan -write!(f, "Circle radius: {}", self.raidus); +write!(f, "Circle radius: {}", self.radius); ``` ### ◉ Print data menggunakan formatted print `{:?}` @@ -201,18 +201,18 @@ Ubah kode dengan menambahkan implementasi trait `Display`. Hasilnya kurang lebih ```rust struct Circle { - raidus: i32, + radius: i32, } impl std::fmt::Debug for Circle { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Circle radius: {}", self.raidus) + write!(f, "Circle radius: {}", self.radius) } } impl std::fmt::Display for Circle { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Circle radius: {}", self.raidus) + write!(f, "Circle radius: {}", self.radius) } } ``` diff --git a/docs/basic/unrecoverable-panic-error.md b/docs/basic/unrecoverable-panic-error.md index 5cf89d4f..fa355fac 100644 --- a/docs/basic/unrecoverable-panic-error.md +++ b/docs/basic/unrecoverable-panic-error.md @@ -64,7 +64,7 @@ Error masih muncul, tapi pesan error-nya berbeda. - Error muncul ketika baris kode `println!("data index 6: {}", data[6]);` dieksekusi. - Kode sebelum baris tersebut masih sempat dieksekusi. - Silakan lihat gambar pertama, output `data index 1: 11` sempat muncul sebelum error. -- Tipe data vector tidak tidak mampu mengetahui kapasitas datanya saat kompilasi, inilah kenapa error bisa lolos kompilasi. +- Tipe data vector tidak mampu mengetahui kapasitas datanya saat kompilasi, inilah kenapa error bisa lolos kompilasi.