Skip to main content

litex/result/
runtime_unknown.rs

1use crate::prelude::*;
2use std::fmt;
3
4#[derive(Debug)]
5pub struct StmtUnknown {
6    pub detail: Option<Vec<String>>,
7}
8
9impl fmt::Display for StmtUnknown {
10    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
11        write!(f, "{}", UNKNOWN_COLON)?;
12        if let Some(detail_lines) = &self.detail {
13            if !detail_lines.is_empty() {
14                write!(f, " {}", detail_lines.join("\n"))?;
15            }
16        }
17        Ok(())
18    }
19}
20
21impl StmtUnknown {
22    pub fn new() -> Self {
23        StmtUnknown { detail: None }
24    }
25
26    pub fn new_with_detail(detail: String) -> Self {
27        Self::new_with_detail_lines(vec![detail])
28    }
29
30    pub fn new_with_detail_lines(detail_lines: Vec<String>) -> Self {
31        if detail_lines.is_empty() {
32            return StmtUnknown { detail: None };
33        }
34        StmtUnknown {
35            detail: Some(detail_lines),
36        }
37    }
38
39    pub fn detail_for_display(&self) -> String {
40        self.detail
41            .as_ref()
42            .map(|lines| lines.join("\n"))
43            .unwrap_or_default()
44    }
45}