สนิม: ไม่พบมาโคร

ฉันกำลังพยายามเรียกใช้โค้ดสนิมจากเอกสารประกอบ postgres_types

ดูโค้ดตัวอย่างได้ที่นี่: postgres_types

สภาพแวดล้อมที่เป็นสนิมของฉัน:

สินค้า --version สินค้า 1.40.0-คืน (5da4b4d47 2019-10-28)

rustc --versionrustc 1.40.0 ทุกคืน (b520af6fd 2019-11-03)


main.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);
}

Cargo.toml

...

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

เมื่อฉันพยายามวิ่งด้วย cargo run ฉันจะได้รับ:

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)]
  |                        ^^^^^^^

ฉันทำอะไรผิดที่นี่? เห็นได้ชัดว่าฉันขาดอะไรบางอย่างพื้นฐานไป ฉันนำเข้ามาโครไม่ถูกต้องใช่ไหม


person James Schinner    schedule 10.11.2019    source แหล่งที่มา


คำตอบ (1)


อ้างอิงจากเอกสารประกอบ

หากเปิดใช้งานคุณสมบัติ derive cargo คุณสามารถรับการใช้งาน ToSql และ FromSql สำหรับประเภท Postgres แบบกำหนดเองได้

หากต้องการเปิดใช้งานคุณลักษณะ derive คุณจะต้องใส่สิ่งนี้ใน Cargo.toml:

[dependencies]
postgres-types = {version = "0.1.0-alpha.1", features = ["derive"]}
person SCappella    schedule 10.11.2019
comment
ขอบคุณ ฉันอัปเดตการอ้างอิงตามที่ต้องการแล้ว และลบ #[cfg(feature = "derive")] ออกจาก main.rs แล้ว และมันก็ใช้งานได้! เป็นเรื่องดีที่มันใช้งานได้ แต่ฉันยอมรับว่าฉันยังไม่เข้าใจกลไกนี้อย่างสมบูรณ์ - person James Schinner; 10.11.2019
comment
@JamesSchinner คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติต่างๆ ได้ใน Cargo manifest เอกสาร. - person SCappella; 10.11.2019
comment
เพื่อเสริมคำตอบนี้: ตรวจสอบให้แน่ใจว่าคุณนำเข้า FromSql และ ToSql จาก postgres_types::{FromSql, ToSql}; และไม่ใช่เวอร์ชันที่ส่งออกซ้ำจาก postgresql - person mirosval; 10.12.2020