pub struct ConclusionView {
pub id: String,
pub assessment: String,
pub decision: String,
pub reviewed_by: Vec<String>,
pub independent_review_count: usize,
pub validations_passed: usize,
pub validations_failed: usize,
pub superseded_by: Option<String>,
pub validation_plan: Vec<String>,
pub risks: Vec<String>,
}Expand description
One conclusion, as the state reports it.
Besides the decision and its computed review, the view counts the validations recorded against the conclusion and names the later conclusion that superseded it, if any. A superseded conclusion stays in the list; the report leaves it out.
use majordomus_cli::reasoning::state::{derive, ConclusionView};
use majordomus_cli::reasoning::store::Loaded;
let conclusion = |decision: &str, supersedes: Option<&str>| {
json!({
"kind": "conclusion", "assessment": "assessment-0", "decision": decision,
"rationale": "r", "supersedes": supersedes,
"reviewed_by": [], "independent_review_count": 0,
})
};
let mut loaded = Loaded::default();
loaded.records.push(rec("conclusion-1", 1, conclusion("A", None)));
loaded.records.push(rec("validation-2", 2, json!({
"kind": "validation", "conclusion": "conclusion-1", "check": "x", "outcome": "fail",
})));
loaded.records.push(rec("conclusion-3", 3, conclusion("B", Some("conclusion-1"))));
let state = derive(&loaded, None);
let first: &ConclusionView = &state.conclusions[0];
assert_eq!((first.validations_passed, first.validations_failed), (0, 1));
assert_eq!(first.superseded_by.as_deref(), Some("conclusion-3"));
assert_eq!(state.conclusions[1].superseded_by, None);Fields§
§id: StringRecord id.
assessment: StringThe assessment it concludes.
decision: StringThe decision.
reviewed_by: Vec<String>Advisors whose answers it weighed.
independent_review_count: usizeHow many.
validations_passed: usizeValidations recorded: passed, failed.
validations_failed: usizeValidations failed.
superseded_by: Option<String>Superseded by a later conclusion.
validation_plan: Vec<String>Its validation plan.
risks: Vec<String>Risks that remain.
Trait Implementations§
Source§impl Clone for ConclusionView
impl Clone for ConclusionView
Source§fn clone(&self) -> ConclusionView
fn clone(&self) -> ConclusionView
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ConclusionView
impl Debug for ConclusionView
Source§impl<'de> Deserialize<'de> for ConclusionView
impl<'de> Deserialize<'de> for ConclusionView
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl JsonSchema for ConclusionView
impl JsonSchema for ConclusionView
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreAuto Trait Implementations§
impl Freeze for ConclusionView
impl RefUnwindSafe for ConclusionView
impl Send for ConclusionView
impl Sync for ConclusionView
impl Unpin for ConclusionView
impl UnsafeUnpin for ConclusionView
impl UnwindSafe for ConclusionView
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more