pub struct Risk {Show 29 fields
pub risk_id: String,
pub title: String,
pub description: String,
pub category: RiskCategory,
pub subcategory: Option<String>,
pub likelihood: Likelihood,
pub impact: Impact,
pub risk_score: u8,
pub risk_level: RiskLevel,
pub threat: Option<String>,
pub vulnerability: Option<String>,
pub asset: Option<String>,
pub existing_controls: Vec<String>,
pub treatment_option: TreatmentOption,
pub treatment_plan: Vec<String>,
pub treatment_owner: Option<String>,
pub treatment_deadline: Option<DateTime<Utc>>,
pub treatment_status: TreatmentStatus,
pub residual_likelihood: Option<Likelihood>,
pub residual_impact: Option<Impact>,
pub residual_risk_score: Option<u8>,
pub residual_risk_level: Option<RiskLevel>,
pub last_reviewed: Option<DateTime<Utc>>,
pub next_review: Option<DateTime<Utc>>,
pub review_frequency: RiskReviewFrequency,
pub compliance_requirements: Vec<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub created_by: Uuid,
}Expand description
Risk entry in the risk register
Fields§
§risk_id: StringRisk ID (e.g., “RISK-001”)
title: StringRisk title
description: StringRisk description
category: RiskCategoryRisk category
subcategory: Option<String>Risk subcategory (optional)
likelihood: LikelihoodLikelihood (1-5)
impact: ImpactImpact (1-5)
risk_score: u8Risk score (likelihood × impact, 1-25)
risk_level: RiskLevelRisk level
threat: Option<String>Threat description
vulnerability: Option<String>Vulnerability description
asset: Option<String>Affected asset
existing_controls: Vec<String>Existing controls
treatment_option: TreatmentOptionTreatment option
treatment_plan: Vec<String>Treatment plan
treatment_owner: Option<String>Treatment owner
treatment_deadline: Option<DateTime<Utc>>Treatment deadline
treatment_status: TreatmentStatusTreatment status
residual_likelihood: Option<Likelihood>Residual likelihood (after treatment)
residual_impact: Option<Impact>Residual impact (after treatment)
residual_risk_score: Option<u8>Residual risk score (after treatment)
residual_risk_level: Option<RiskLevel>Residual risk level (after treatment)
last_reviewed: Option<DateTime<Utc>>Last reviewed date
next_review: Option<DateTime<Utc>>Next review date
review_frequency: RiskReviewFrequencyReview frequency
compliance_requirements: Vec<String>Compliance requirements
created_at: DateTime<Utc>Created date
updated_at: DateTime<Utc>Updated date
created_by: UuidCreated by user ID
Implementations§
Source§impl Risk
impl Risk
Sourcepub fn new(
risk_id: String,
title: String,
description: String,
category: RiskCategory,
likelihood: Likelihood,
impact: Impact,
created_by: Uuid,
) -> Self
pub fn new( risk_id: String, title: String, description: String, category: RiskCategory, likelihood: Likelihood, impact: Impact, created_by: Uuid, ) -> Self
Create a new risk
Sourcepub fn recalculate(&mut self)
pub fn recalculate(&mut self)
Recalculate risk score and level
Sourcepub fn calculate_next_review(&mut self)
pub fn calculate_next_review(&mut self)
Calculate next review date based on frequency
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Risk
impl<'de> Deserialize<'de> for Risk
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
Auto Trait Implementations§
impl Freeze for Risk
impl RefUnwindSafe for Risk
impl Send for Risk
impl Sync for Risk
impl Unpin for Risk
impl UnwindSafe for Risk
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more