Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/basic/advanced-traits.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.

Expand Down
2 changes: 1 addition & 1 deletion docs/basic/datetime.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
2 changes: 1 addition & 1 deletion docs/basic/file-path-directory.md
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
2 changes: 1 addition & 1 deletion docs/basic/lifetime.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion docs/basic/module-basic.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

---

Expand Down
2 changes: 1 addition & 1 deletion docs/basic/module-inline.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
6 changes: 2 additions & 4 deletions docs/basic/operator-tanda-tanya.md
Original file line number Diff line number Diff line change
Expand Up @@ -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<T, E>` (atau `Option<T>`) yang pada contoh ini adalah fungsi `divider()`. Operator tersebut meng-unwrap nilai balik fungsi `divider()` yang bertipe `Result<f64, &'static str>` dengan ketentuan:

- Jila nilai balik `Result<f64, &'static str>` berisi nilai `Ok(f64)`, maka nilai `f64` dikembalikan.
- Jika nilai balik `Result<f64, &'static str>` 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<f64, &'static str>` 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<f64, &'static str>` 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.

Expand Down
2 changes: 1 addition & 1 deletion docs/basic/operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/basic/pointer-references.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion docs/basic/slice-memory-management.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion docs/basic/slice.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
2 changes: 1 addition & 1 deletion docs/basic/string-slice-vs-string-literal.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
20 changes: 10 additions & 10 deletions docs/basic/traits.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
```

Expand Down Expand Up @@ -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);
}
```
Expand Down Expand Up @@ -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)
}
}
```
Expand All @@ -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 `{:?}`
Expand All @@ -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)
}
}
```
Expand Down
2 changes: 1 addition & 1 deletion docs/basic/unrecoverable-panic-error.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

</td>
</tr>
Expand Down
Loading