provenant/output_schema/
email.rs1use serde::{Deserialize, Serialize};
5
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub struct OutputEmail {
8 pub email: String,
9 pub start_line: u64,
10 pub end_line: u64,
11}
12
13impl From<&crate::models::OutputEmail> for OutputEmail {
14 fn from(value: &crate::models::OutputEmail) -> Self {
15 Self {
16 email: value.email.clone(),
17 start_line: value.start_line.get() as u64,
18 end_line: value.end_line.get() as u64,
19 }
20 }
21}
22
23impl TryFrom<&OutputEmail> for crate::models::OutputEmail {
24 type Error = String;
25 fn try_from(value: &OutputEmail) -> Result<Self, Self::Error> {
26 use crate::models::LineNumber;
27 let start_line = LineNumber::new(value.start_line as usize)
28 .ok_or_else(|| format!("invalid start_line: {}", value.start_line))?;
29 let end_line = LineNumber::new(value.end_line as usize)
30 .ok_or_else(|| format!("invalid end_line: {}", value.end_line))?;
31 Ok(Self {
32 email: value.email.clone(),
33 start_line,
34 end_line,
35 })
36 }
37}