Skip to the content.

https://doc.rust-lang.org/rust-by-example/

Fitur Bahasa

Module

Module adalah wadah untuk kumpulan Item (Struct, Function, Trait, Impl, Module lainnya).

mod perusahaan {

    pub struct Karyawan {
        pub nama: String,
        pub jabatan: String,
        gaji: i32,
    }
    
    pub fn lihat_detail_perusahaan() {
        println!("Lihat detail perusahaan");
    }
    
    fn lihat_rahasia_perusahaan() {
        println!("Lihat rahasia perusahaan");
    }
    
    mod divisi_marketing {
        pub fn lihat_iklan_perusahaan() {
            println!("Lihat iklan perusahaan");
        }
        
        fn menyiapkan_strategi_marketing() {
            println!("Menyiapkan strategi marketing");
        }
    }
}

Cara Mengakses Module

Ada beberapa cara untuk mengakses Module.

Alamat Module yang ditulis di script Alamat di Filesystem Isi File
crate src/lib.rs mod jualan_baso;
crate::jualan_baso src/jualan_baso.rs atau src/jualan_baso/mod.rs pilih salah satu mod persiapan;
crate::jualan_baso::persiapan src/jualan_baso/persiapan.rs

Pointer

Generic

struct Koordinat<TipeX> {
    x: TipeX,
    y: TipeX,
}

https://stackoverflow.com/questions/58027416/what-are-the-brackets-before-a-function-in-rust

Struct

Struct adalah tipe data khusus untuk mengelompokkan data yang saling terkait. Ada tiga bentuk penggunaan Struct yaitu sebagai :

// Pendefinisian Struct (Struct definition)

// Struct tradisional
struct Penduduk {
    nama: String,
    jenis_kelamin: i32,
    umur: i32,
}

// Struct unit
struct Bahasa;

// Struct tuple
struct LongLat(f32, f32);

// Penggunaan Struct (Struct instantiation)
let penduduk1 = Penduduk {
    nama: String::from("Lamsijan"),
    jenis_kelamin: 1,
    umur: 24,
}

Impl

Mendefinisikan method untuk Struct dan Enum

Trait

pub fn bersuara(a: &impl Benda) {
    println!("Bersuara seperti ini {}", a.suara());
}

Attributes

Types

Type pada setiap item di Rust menunjukan operasi-operasi yang dapat dilakukan item tersebut, dan bagaimana interpretasi dari memory-nya.

Referensi:

Deklarasi Type

Type Alias

Dapat digunakan untuk mempersingkat dan menyederhanakan type. Contoh :

type DBCon = Connection<PgConnectionManager<NoTls>>;

Option

Result

Ownership

Macros

Future

Contoh Script dan Cara Memahaminya

Contoh 1

impl<F> FilterBase for BoxingFilter<F>
where
    F: Filter,
    F::Future: Send + 'static,
{
    type Extract = F::Extract;
    type Error = F::Error;
    type Future = Pin<Box<dyn Future<Output = Result<Self::Extract, Self::Error>> + Send>>;

    fn filter(&self, _: Internal) -> Self::Future {
        Box::pin(self.filter.filter(Internal).into_future())
    }
}