Karat: tidak dapat menemukan makro

Saya mencoba menjalankan kode karat dari dokumentasi postgres_types.

Contoh kodenya dapat ditemukan di sini: postgres_types

lingkungan karat saya:

kargo --versi kargo 1.40.0-malam (5da4b4d47 28-10-2019)

Rustc --versi Rustc 1.40.0-nightly (b520af6fd 03-11-2019)


utama.rs

#[cfg(feature = "derive")]
use postgres_types::{ToSql, FromSql};

#[derive(Debug, ToSql, FromSql)]
enum Mood {
    Sad,
    Ok,
    Happy,
}

fn main() {
    let mood = Mood::Sad;

    println!("{:?}", mood);
}

Kargo.toml

...

[dependencies]
postgres-types = "0.1.0-alpha.1"

Ketika saya mencoba dan menjalankan dengan cargo run saya mendapatkan:

error: cannot find derive macro `ToSql` in this scope
 --> src\main.rs:4:17
  |
4 | #[derive(Debug, ToSql, FromSql)]
  |                 ^^^^^

error: cannot find derive macro `FromSql` in this scope
 --> src\main.rs:4:24
  |
4 | #[derive(Debug, ToSql, FromSql)]
  |                        ^^^^^^^

Apa yang saya lakukan salah di sini? Jelas saya melewatkan sesuatu yang mendasar. Apakah saya belum mengimpor makro dengan benar?


person James Schinner    schedule 10.11.2019    source sumber


Jawaban (1)


Mengutip dari dokumentasi,

Jika fitur derive kargo diaktifkan, Anda dapat memperoleh implementasi ToSql dan FromSql untuk tipe Postgres khusus.

Untuk mengaktifkan fitur derive, Anda harus memasukkan ini ke Cargo.toml:

[dependencies]
postgres-types = {version = "0.1.0-alpha.1", features = ["derive"]}
person SCappella    schedule 10.11.2019
comment
Terima kasih, saya memperbarui dependensi sesuai kebutuhan dan menghapus #[cfg(feature = "derive")] dari main.rs dan berhasil! Hebatnya berhasil, tapi saya akui saya belum sepenuhnya memahami mekanismenya - person James Schinner; 10.11.2019
comment
@JamesSchinner Anda dapat mempelajari lebih lanjut tentang fitur di Manifes kargo dokumentasi. - person SCappella; 10.11.2019
comment
Untuk melengkapi jawaban ini: Pastikan Anda mengimpor FromSql dan ToSql dari postgres_types::{FromSql, ToSql}; dan bukan versi yang diekspor ulang dari postgresql. - person mirosval; 10.12.2020