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