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; | ||
|  | 		} | ||
|  | 	} | ||
|  | } |