|
@@ -27,6 +27,22 @@ namespace System
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public ref T ValueRef
|
|
|
|
+ {
|
|
|
|
+ [Inline]
|
|
|
|
+ get mut
|
|
|
|
+ {
|
|
|
|
+ switch (this)
|
|
|
|
+ {
|
|
|
|
+ case .Ok(var ref val): return ref val;
|
|
|
|
+ case .Err:
|
|
|
|
+ {
|
|
|
|
+ Internal.FatalError("Unhandled error in result", 2);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
[Inline]
|
|
[Inline]
|
|
public static implicit operator Result<T>(T value)
|
|
public static implicit operator Result<T>(T value)
|
|
{
|
|
{
|
|
@@ -39,6 +55,19 @@ namespace System
|
|
return result.Unwrap();
|
|
return result.Unwrap();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ [Inline]
|
|
|
|
+ public static mut T operator->(ref Result<T> result)
|
|
|
|
+ {
|
|
|
|
+ switch (result)
|
|
|
|
+ {
|
|
|
|
+ case .Ok(var mut val): return mut val;
|
|
|
|
+ case .Err:
|
|
|
|
+ {
|
|
|
|
+ Internal.FatalError("Unhandled error in result", 2);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
[Inline]
|
|
[Inline]
|
|
public void IgnoreError()
|
|
public void IgnoreError()
|
|
{
|
|
{
|
|
@@ -116,9 +145,9 @@ namespace System
|
|
switch (this)
|
|
switch (this)
|
|
{
|
|
{
|
|
case .Ok(var val): return val;
|
|
case .Ok(var val): return val;
|
|
- case .Err(var err):
|
|
|
|
|
|
+ case .Err:
|
|
{
|
|
{
|
|
- Internal.FatalError(scope String()..AppendF("Unhandled error in result:\n {}", err), 2);
|
|
|
|
|
|
+ Internal.FatalError("Unhandled error in result", 2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -131,16 +160,47 @@ namespace System
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public ref T ValueRef
|
|
|
|
+ {
|
|
|
|
+ [Inline]
|
|
|
|
+ get mut
|
|
|
|
+ {
|
|
|
|
+ switch (this)
|
|
|
|
+ {
|
|
|
|
+ case .Ok(var ref val): return ref val;
|
|
|
|
+ case .Err:
|
|
|
|
+ {
|
|
|
|
+ Internal.FatalError("Unhandled error in result", 2);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Inline]
|
|
public static implicit operator Result<T, TErr>(T value)
|
|
public static implicit operator Result<T, TErr>(T value)
|
|
{
|
|
{
|
|
return .Ok(value);
|
|
return .Ok(value);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ [Inline]
|
|
public static implicit operator T(Result<T, TErr> result)
|
|
public static implicit operator T(Result<T, TErr> result)
|
|
{
|
|
{
|
|
return result.Unwrap();
|
|
return result.Unwrap();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ [Inline]
|
|
|
|
+ public static mut T operator->(ref Result<T, TErr> result)
|
|
|
|
+ {
|
|
|
|
+ switch (result)
|
|
|
|
+ {
|
|
|
|
+ case .Ok(var mut val): return mut val;
|
|
|
|
+ case .Err:
|
|
|
|
+ {
|
|
|
|
+ Internal.FatalError("Unhandled error in result", 2);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
public void IgnoreError()
|
|
public void IgnoreError()
|
|
{
|
|
{
|
|
}
|
|
}
|