Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tidak bisa menjalankan hasil dari sub bab Associated Functions #14

Open
kresnasatya opened this issue Sep 27, 2020 · 3 comments
Open

Tidak bisa menjalankan hasil dari sub bab Associated Functions #14

kresnasatya opened this issue Sep 27, 2020 · 3 comments

Comments

@kresnasatya
Copy link

Halo, saya mencoba kode sub bab Associated Functions di bab Struct.

impl People {
    fn count_income(d: i32, i: i32) -> People {
        People { days: d, income: i }
    }
}

fn main() {
    let show = People::count_income(30, 3000);
    println!("{:#?}", show);
}

Saat saya menjalankan kode di atas tidak berhasil karena modul People tidak dideklarasikan. Berikut screenshotnya.

Screen Shot 2020-09-27 at 16 33 16

Saya mencoba mendeklarasikan struct People sebelum kode impl People seperti di bawah ini.

struct People;

impl People {
    fn count_income(d: i32, i: i32) -> People {
        People { days: d, income: i }
    }
}

fn main() {
    let show = People::count_income(30, 3000);
    println!("{:#?}", show);
}

Namun, saat saya jalankan tidak berhasil karena People tidak memiliki field days dan income. Berikut screenshotnya.

Screen Shot 2020-09-27 at 16 37 02

Kemudian, saya coba menambahkan field days dan income di struct People kode masih tidak bisa dijalankan karena masalah formatting.

struct People {
    days: i32,
    income: i32
}

impl People {
    fn count_income(d: i32, i: i32) -> People {
        People { days: d, income: i }
    }
}

fn main() {
    let show = People::count_income(30, 3000);
    println!("{:#?}", show);
}

Screen Shot 2020-09-27 at 16 41 07

Akhirnya, saya coba tambahkan #[derive(Debug)] di atas struct People barulah berjalan sesuai dengan ekspektasi.

#[derive(Debug)]
struct People {
    days: i32,
    income: i32
}

impl People {
    fn count_income(d: i32, i: i32) -> People {
        People { days: d, income: i }
    }
}

fn main() {
    let show = People::count_income(30, 3000);
    println!("{:#?}", show);
}

Screen Shot 2020-09-27 at 16 42 51

Saya penasaran mengapa saya harus mendefinisikan struct People lagi? Padahal di dalam impl People sudah mendefinisikan struct People secara tidak langsung.

Cc mas @adiatma, @ri7nz, @kevanantha

Terima kasih.

@adiatma
Copy link
Member

adiatma commented Sep 27, 2020

Sebelumnya thanks udah buat issue mas @satyakresna 🙏

Oke, bantu jawab nih.

struct bisa dibilang custom struktur data, yang isinnya bisa ada macem2, bisa integer, dan string di dalamnya. impl itu sebuah blok implementasi yang terasosiasi dengan tipe data tertentu, karna implement sangat bergantung dengan tipe data, jadinya butuh untuk membuat struct dulu, agar bisa menggunakan impl.

Semoga bisa menjawab

@kresnasatya
Copy link
Author

karna implement sangat bergantung dengan tipe data, jadinya butuh untuk membuat struct dulu, agar bisa menggunakan impl

Makasih mas @adiatma atas penjelasannya. 🙏

Di bagian contoh kode sub bab Associated functions tidak memuat struct People yang menyebabkan saya menemukan error tersebut. Tetapi, langkah-langkah yang saya lakukan di atas agar kode berhasil berjalan apakah sudah benar ya? Supaya saya bisa bantu kontribusi perbaiki dokumentasinya.

@adiatma
Copy link
Member

adiatma commented Sep 27, 2020

Terimakasih mas @satyakresna, langkah2nya udah sesuai mas, thanks ya...

di tunggu kontribusinya 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants