
Why i still code in rust without any output?
Rust untuk kesekian kalinya akan jadi sesi menarik karena saya akan mulai menulis mengenai beberapa pengalaman saat mempelajari bahasa kepiting ini, lebih tepatnya pengalaman stuck saat belajar.
Saya sudah mencoba mempelajari bahasa ini sejak 2023 tapi ternyata tidak semudah itu. Mulai dari pasang surut motivasi, sibuk, dan keinginan untuk berpindah pada bahasa yang lebih berorientasi pada tujuan.
Keraguan mulai muncul karena proyek yang saya buat secara sederhana menggunakan Python, seperti perhitungan ulangan, LER, dan ATER, sedangkan yang sedang dipelajari adalah Rust. Lalu semuanya mulai terasa “oh no” Rust adalah bahasa low level language.
Sangat sulit untuk membuat program seperti Python. Rust mengharuskan kita memahami konsep-konsep dasar terlebih dahulu baru kita dapat membayangkan apa yang akan dibuat.
Hal ini cukup membuat saya frustasi. Suatu ketika ada meme seperti di bawah ini.

Shadowing
Saat sedang membaca kembali secara terstruktur di sini dan membaca banyak sumber agar dapat mendapatkan esensi dari shadowing. Ternyata benar saja ada hal penting terlewatkan walaupun saya sudah menulis artikel shadowing sebelumnya.
Konsep ini menjadi penting untuk membedakan mana yang merupakan replace dan shadowing.
fn main () {
let mut x = -23;
println!("{x}");
{
x = -20;
println!("{x}");}
println!("{x}");
}
Kode 1.0 contoh replace value
Alur logika dari kode 1.0 adalah variabel binding dengan x bernilai -23. Lalu setelah itu terdapat kode kedua yang sama tetapi nilanya berbeda (-20). Apakah ini adalah shadowing?
Ternyata hal ini bukanlah shadowing, melainkan mengganti value dari variabel mutabel. Artinya tempat untuk nilai dari variabel x hanya satu, anggaplah dibagian y memori, asalnya bernilai -23 yang kemudian nilai tersebut menjadi -20.
-23
-20
-20
Kode 2.0 output
Shadowing harus menggunakan syntax let pada variabel ke-2…ke-n karena konsep dari shadowing adalah membuat dua variabel baru yang tentunya memiliki tempat penyimpanan berbeda pada memori.
Apa yang terjadi ketika nilai pada variabel di ubah? apakah nilai selanjutnya akan sama dengan variabel asli atau mengikuti perubahan terbaru karena nilai x telah ditimpa dari -23 menjadi -20.
fn main () {
let mut x = -23;
println!("{x}");
{
let x = -20;
println!("{x}");}
println!("{x}");
}
Kode 3.0 shadowing
Perhatikan perbedaan dengan kode sebelumnya karena terdapat let x = -20;. Pada memori akan terdapat dua tempat, yaitu tempat y dan tempat z. Perhatikan ouputnya pada kode 4.0 di bawah ini.
-23
-20
-23
Leave a comment