रस्ट लक्षण संतुष्ट नहीं है
मैं जंग के लिए नया हूँ और स्टैकओवरफ़्लो में खोज करने के साथ-साथ सर्ड डॉक्यूमेंटेशन पढ़ने की कोशिश की https://docs.serde.rs/serde/trait.Serialize.html तथा https://serde.rs/impl-serialize.html, लेकिन मैं थोड़ा खो गया था।
मैं html उत्पन्न करने के लिए Tera का उपयोग करना चाहूंगा और जो संरचना मैं इसे पारित कर रहा हूं उसमें विशेषता serde::ser::Serialize
लागू नहीं है और मैंने इसे लागू करने का प्रयास किया है लेकिन यह बिल्कुल सही नहीं लगता है।
कार्गो। निर्भरताएँ
serde = "1.0.115"
serde_derive = "1.0.115"
serde-xml-rs = "0.4.0"
tera = "0.7.2"
मुख्य
extern crate tera;
#[macro_use]
extern crate serde_derive;
extern crate serde;
use tera::Context;
use serde::ser::{Serialize, SerializeStruct, Serializer};
#[derive(Serialize, Debug)]
struct Person {
firstname: String,
lastname: String,
age: i32,
}
#[derive(Debug)]
struct Attendees {
people: Vec<Person>,
updatedOn: String,
updatedBy: String,
}
impl Serialize for Attendees {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut s = serializer.serialize_struct("Person", 3)?;
s.serialize_field("people", &self.people)?;
s.serialize_field("updatedOn", &self.updatedOn)?;
s.serialize_field("updatedBy", &self.updatedBy)?;
s.end()
}
}
fn main() {
let mut context = Context::new();
let mut peeps: Vec<Person> = Vec::new();
let mut attendees = Attendees {
people: peeps,
updatedOn: String::from("today"),
updatedBy: String::from("someone"),
};
context.add("attendees", &attendees);
}
संकलक कहते हैं:
mytest % cargo run
Compiling mytest v0.1.0 (/home/mike/mytest)
error[E0277]: the trait bound `Attendees: serde::ser::Serialize` is not satisfied
--> src/main.rs:44:29
|
44 | context.add("attendees", &attendees);
| ^^^^^^^^^^ the trait `serde::ser::Serialize` is not implemented for `Attendees`
error: aborting due to previous error
मुझे स्पष्ट रूप से कुछ याद आ रहा है ... क्या कोई कृपया मदद कर सकता है?
जवाब
आपके द्वारा लागू किया गया गुण और त्रुटि का उल्लेख करने वाले गुण समान नहीं हैं, क्योंकि वे दो अलग-अलग संस्करणों के सर्ड को संदर्भित करते हैं।
[[package]]
name = "tera"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c37e2aaa53871f9c3722a20f8951fea0afd366955e11542a58feb71997c6d769"
dependencies = [
"chrono",
"error-chain",
"glob",
"humansize",
"lazy_static 0.2.11",
"pest",
"regex",
"serde 0.9.15",
"serde_json",
"slug",
"url",
]
tera नाग 0.7.2
के संस्करण 1.0.*
का उपयोग नहीं कर रहा है , लेकिन 0.9.*
।
आप टेरा के अधिक हाल के उपयोग कर सकते हैं, या अपने Cargo.toml में एक संगत सर्ड संस्करण का उपयोग कर सकते हैं:
[dependencies]
serde = "0.9.15"
serde_derive = "0.9.15"