Implement the outstanding type casts for serde_json.
This commit is contained in:
		
							parent
							
								
									021a7bd739
								
							
						
					
					
						commit
						c300d18a75
					
				
							
								
								
									
										67
									
								
								src/bin.rs
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								src/bin.rs
									
									
									
									
									
								
							| @ -355,24 +355,63 @@ impl Castable for serde_json::Value { | ||||
|                 }) | ||||
|                 .ok(), | ||||
|             (serde_json::Value::Number(_), "number") => Some(IceResult::from_borrowed(self)), | ||||
|             (serde_json::Value::Null, "number") => None, | ||||
|             (serde_json::Value::Bool(_), "number") => None, | ||||
|             (serde_json::Value::Null, "number") => { | ||||
|                 Some(IceResult::from_owned(serde_json::Value::Number(0.into()))) | ||||
|             } | ||||
|             (serde_json::Value::Bool(boolean), "number") => { | ||||
|                 if *boolean { | ||||
|                     Some(IceResult::from_owned(serde_json::Value::Number(1.into()))) | ||||
|                 } else { | ||||
|                     Some(IceResult::from_owned(serde_json::Value::Number(0.into()))) | ||||
|                 } | ||||
|             } | ||||
|             (serde_json::Value::Array(_), "number") => None, | ||||
|             (serde_json::Value::Object(_), "number") => None, | ||||
| 
 | ||||
|             (serde_json::Value::String(text), "string") => todo!(), | ||||
|             (serde_json::Value::Number(_), "string") => todo!(), | ||||
|             (serde_json::Value::Null, "string") => todo!(), | ||||
|             (serde_json::Value::Bool(_), "string") => todo!(), | ||||
|             (serde_json::Value::Array(_), "string") => todo!(), | ||||
|             (serde_json::Value::Object(_), "string") => todo!(), | ||||
|             (serde_json::Value::String(text), "string") => Some(IceResult::from_borrowed(self)), | ||||
|             (serde_json::Value::Number(num), "string") => Some(IceResult::from_owned( | ||||
|                 serde_json::Value::String(num.to_string()), | ||||
|             )), | ||||
|             (serde_json::Value::Null, "string") => Some(IceResult::from_owned( | ||||
|                 serde_json::Value::String("null".to_owned()), | ||||
|             )), | ||||
|             (serde_json::Value::Bool(boolean), "string") => Some(IceResult::from_owned( | ||||
|                 serde_json::Value::String(boolean.to_string()), | ||||
|             )), | ||||
|             (serde_json::Value::Array(_), "string") => Some(IceResult::from_owned( | ||||
|                 serde_json::Value::String(self.render(&Vec::new()).unwrap_or("".to_owned())), | ||||
|             )), | ||||
|             (serde_json::Value::Object(_), "string") => Some(IceResult::from_owned( | ||||
|                 serde_json::Value::String(self.render(&Vec::new()).unwrap_or("".to_owned())), | ||||
|             )), | ||||
| 
 | ||||
|             (serde_json::Value::String(text), "boolean") => todo!(), | ||||
|             (serde_json::Value::Number(_), "boolean") => todo!(), | ||||
|             (serde_json::Value::Null, "boolean") => todo!(), | ||||
|             (serde_json::Value::Bool(_), "boolean") => todo!(), | ||||
|             (serde_json::Value::Array(_), "boolean") => todo!(), | ||||
|             (serde_json::Value::Object(_), "boolean") => todo!(), | ||||
|             (serde_json::Value::String(text), "boolean") => { | ||||
|                 if text.is_empty() { | ||||
|                     Some(IceResult::from_owned(serde_json::Value::Bool(false))) | ||||
|                 } else { | ||||
|                     Some(IceResult::from_owned(serde_json::Value::Bool(true))) | ||||
|                 } | ||||
|             } | ||||
|             (serde_json::Value::Number(json_num), "boolean") => { | ||||
|                 Some(IceResult::from_owned(serde_json::Value::Bool( | ||||
|                     match (json_num.as_u64(), json_num.as_i64(), json_num.as_f64()) { | ||||
|                         (Some(num), _, _) => num != 0, | ||||
|                         (_, Some(num), _) => num != 0, | ||||
|                         (_, _, Some(num)) => num != 0.0 && !num.is_nan(), | ||||
|                         _ => false, | ||||
|                     }, | ||||
|                 ))) | ||||
|             } | ||||
|             (serde_json::Value::Null, "boolean") => { | ||||
|                 Some(IceResult::from_owned(serde_json::Value::Bool(false))) | ||||
|             } | ||||
|             (serde_json::Value::Bool(_), "boolean") => Some(IceResult::from_borrowed(self)), | ||||
|             (serde_json::Value::Array(_), "boolean") => { | ||||
|                 Some(IceResult::from_owned(serde_json::Value::Bool(true))) | ||||
|             } | ||||
|             (serde_json::Value::Object(_), "boolean") => { | ||||
|                 Some(IceResult::from_owned(serde_json::Value::Bool(true))) | ||||
|             } | ||||
| 
 | ||||
|             (_, _) => panic!("Unimplemented cast"), | ||||
|         } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom Alexander
						Tom Alexander