40 lines
		
	
	
		
			781 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			781 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package eval.luv;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Outcome of an operation.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								@:using(eval.luv.Result.ResultTools)
							 | 
						||
| 
								 | 
							
								enum Result<T> {
							 | 
						||
| 
								 | 
							
									/** Operation completed successfully. **/
							 | 
						||
| 
								 | 
							
									Ok(value:T);
							 | 
						||
| 
								 | 
							
									/** Operation failed. **/
							 | 
						||
| 
								 | 
							
									Error(e:UVError);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum abstract NoData(Dynamic) {
							 | 
						||
| 
								 | 
							
									var NoData = null;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ResultTools {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Returns the result value on success or throws `eval.luv.LuvException`
							 | 
						||
| 
								 | 
							
										on failure.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static public inline function resolve<T>(result:Result<T>):T {
							 | 
						||
| 
								 | 
							
										switch result {
							 | 
						||
| 
								 | 
							
											case Ok(v): return v;
							 | 
						||
| 
								 | 
							
											case Error(e): throw new LuvException(e);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Returns `true` if the result is `Ok`.
							 | 
						||
| 
								 | 
							
										Returns `false` if the result is `Error`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static public inline function isOk<T>(result:Result<T>):Bool {
							 | 
						||
| 
								 | 
							
										return switch result {
							 | 
						||
| 
								 | 
							
											case Ok(_): true;
							 | 
						||
| 
								 | 
							
											case Error(_): false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |