debian_control/lossy/
ftpmaster.rs1use deb822_fast::{FromDeb822, FromDeb822Paragraph, ToDeb822};
4
5fn serialize_list(list: &[String]) -> String {
6 list.join("\n")
7}
8
9fn deserialize_list(list: &str) -> Result<Vec<String>, String> {
10 Ok(list.lines().map(|s| s.to_string()).collect())
11}
12
13#[derive(Debug, Clone, FromDeb822, ToDeb822)]
14pub struct Removal {
16 #[deb822(field = "Date")]
17 pub date: String,
19
20 #[deb822(field = "Suite")]
21 pub suite: Option<String>,
23
24 #[deb822(field = "Ftpmaster")]
25 pub ftpmaster: String,
27
28 #[deb822(field = "Sources", serialize_with = serialize_list, deserialize_with = deserialize_list)]
29 pub sources: Option<Vec<String>>,
31
32 #[deb822(field = "Binaries", serialize_with = serialize_list, deserialize_with = deserialize_list)]
33 pub binaries: Option<Vec<String>>,
35
36 #[deb822(field = "Reason")]
37 pub reason: String,
39
40 #[deb822(field = "Bug")]
41 pub bug: Option<u32>,
43}
44
45impl std::str::FromStr for Removal {
46 type Err = String;
47
48 fn from_str(s: &str) -> Result<Self, Self::Err> {
49 let paragraph = deb822_fast::Paragraph::from_str(s).map_err(|e| e.to_string())?;
50 Self::from_paragraph(¶graph).map_err(|e| e.to_string())
51 }
52}