client-api: Make conversion from PushRule to ConditionalPushRule infallible
This commit is contained in:
		
							parent
							
								
									9b07772d1a
								
							
						
					
					
						commit
						02f29d6114
					
				| @ -1,5 +1,11 @@ | ||||
| # [unreleased] | ||||
| 
 | ||||
| Breaking changes: | ||||
| 
 | ||||
| - The conversion from `PushRule` to `ConditionalPushRule` is infallible since | ||||
|   the `conditions` field is optional. | ||||
|   - `MissingConditionsError` was removed. | ||||
| 
 | ||||
| # 0.17.2 | ||||
| 
 | ||||
| Improvements: | ||||
|  | ||||
| @ -173,32 +173,18 @@ impl TryFrom<PushRule> for PatternedPushRule { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// An error that happens when `PushRule` cannot
 | ||||
| /// be converted into `ConditionalPushRule`
 | ||||
| #[derive(Debug)] | ||||
| #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] | ||||
| pub struct MissingConditionsError; | ||||
| impl From<PushRule> for ConditionalPushRule { | ||||
|     fn from(push_rule: PushRule) -> Self { | ||||
|         let PushRule { actions, default, enabled, rule_id, conditions, .. } = push_rule; | ||||
| 
 | ||||
| impl fmt::Display for MissingConditionsError { | ||||
|     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ||||
|         write!(f, "Push rule has no conditions.") | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl Error for MissingConditionsError {} | ||||
| 
 | ||||
| impl TryFrom<PushRule> for ConditionalPushRule { | ||||
|     type Error = MissingConditionsError; | ||||
| 
 | ||||
|     fn try_from(push_rule: PushRule) -> Result<Self, Self::Error> { | ||||
|         if let PushRule { | ||||
|             actions, default, enabled, rule_id, conditions: Some(conditions), .. | ||||
|         } = push_rule | ||||
|         { | ||||
|             Ok(ConditionalPushRuleInit { actions, default, enabled, rule_id, conditions }.into()) | ||||
|         } else { | ||||
|             Err(MissingConditionsError) | ||||
|         ConditionalPushRuleInit { | ||||
|             actions, | ||||
|             default, | ||||
|             enabled, | ||||
|             rule_id, | ||||
|             conditions: conditions.unwrap_or_default(), | ||||
|         } | ||||
|         .into() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user