Class NumericOptionExtensions
Extension methods for the Option<T> type.
Inherited Members
Namespace: RustyOptions
Assembly: RustyOptions.dll
Syntax
public static class NumericOptionExtensions
Methods
| Edit this page View SourceAndThen<T1, T2>(NumericOption<T1>, Func<T1, NumericOption<T2>>)
Returns None if the option is None, otherwise calls thenFn with the wrapped value and returns the result.
Declaration
public static NumericOption<T2> AndThen<T1, T2>(this NumericOption<T1> self, Func<T1, NumericOption<T2>> thenFn) where T1 : struct, INumber<T1> where T2 : struct, INumber<T2>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T1> | self | The first option. |
| Func<T1, NumericOption<T2>> | thenFn | The function to call with the contained value, if there is a contained value. |
Returns
| Type | Description |
|---|---|
| NumericOption<T2> |
Type Parameters
| Name | Description |
|---|---|
| T1 | The type contained by the first option. |
| T2 | The type contained by the second option. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |
And<T1, T2>(NumericOption<T1>, NumericOption<T2>)
Returns None if self is None, otherwise returns other.
Declaration
public static NumericOption<T2> And<T1, T2>(this NumericOption<T1> self, NumericOption<T2> other) where T1 : struct, INumber<T1> where T2 : struct, INumber<T2>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T1> | self | The first option. |
| NumericOption<T2> | other | The second option. |
Returns
| Type | Description |
|---|---|
| NumericOption<T2> |
Type Parameters
| Name | Description |
|---|---|
| T1 | The type contained by the first option. |
| T2 | The type contained by the second option. |
Expect<T>(NumericOption<T>, string)
Returns the contained Some value, or throws an InvalidOperationException
if the value is None.
Declaration
public static T Expect<T>(this NumericOption<T> self, string message) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T> | self | The option to unwrap. |
| string | message | The message for the exception that gets thrown if the option has no value. |
Returns
| Type | Description |
|---|---|
| T | The value contained in the option. |
Type Parameters
| Name | Description |
|---|---|
| T | The type of the option. |
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException | Thrown if the option does not contain a value. |
Filter<T>(NumericOption<T>, Func<T, bool>)
Returns None if the option is None, otherwise calls predicate
and returns Some if the predicated returns true, otherwise None.
Declaration
public static NumericOption<T> Filter<T>(this NumericOption<T> self, Func<T, bool> predicate) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T> | self | The option to check. |
| Func<T, bool> | predicate | The function that determines if the value in the option is valid to return. |
Returns
| Type | Description |
|---|---|
| NumericOption<T> |
|
Type Parameters
| Name | Description |
|---|---|
| T | The type of the value. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |
Flatten<T>(NumericOption<NumericOption<T>>)
Removes one level of nesting from nested options.
Declaration
public static NumericOption<T> Flatten<T>(this NumericOption<NumericOption<T>> self) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<NumericOption<T>> | self | The nested option to flatten. |
Returns
| Type | Description |
|---|---|
| NumericOption<T> | The given option with one level of nesting removed. |
Type Parameters
| Name | Description |
|---|---|
| T | The type of the value. |
MapOrElse<T1, T2>(NumericOption<T1>, Func<T1, T2>, Func<T2>)
Computes a default function result (if None), or applies a different function to the contained value (if Some).
Declaration
public static T2 MapOrElse<T1, T2>(this NumericOption<T1> self, Func<T1, T2> mapper, Func<T2> defaultFactory) where T1 : struct, INumber<T1> where T2 : notnull
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T1> | self | The option to map. |
| Func<T1, T2> | mapper | The function that maps the value contained in the option. |
| Func<T2> | defaultFactory | The function that lazily generates a default value, if required. |
Returns
| Type | Description |
|---|---|
| T2 | The mapped value, or the default value. |
Type Parameters
| Name | Description |
|---|---|
| T1 | The type of the option's value. |
| T2 | The return type after mapping. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |
MapOr<T1, T2>(NumericOption<T1>, Func<T1, T2>, T2)
Returns the provided default result (if None), or applies a function to the contained value (if Some).
Arguments passed to MapOr<T1, T2>(NumericOption<T1>, Func<T1, T2>, T2) are eagerly evaluated; if you are passing the result of a function call, it is recommended to use MapOrElse<T1, T2>(NumericOption<T1>, Func<T1, T2>, Func<T2>), which is lazily evaluated.
Declaration
public static T2 MapOr<T1, T2>(this NumericOption<T1> self, Func<T1, T2> mapper, T2 defaultValue) where T1 : struct, INumber<T1> where T2 : notnull
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T1> | self | The option to map. |
| Func<T1, T2> | mapper | The function that maps the value contained in the option. |
| T2 | defaultValue | The default value to return if the option is |
Returns
| Type | Description |
|---|---|
| T2 | The mapped value, or the default value. |
Type Parameters
| Name | Description |
|---|---|
| T1 | The type of the option's value. |
| T2 | The return type after mapping. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |
Map<T1, T2>(NumericOption<T1>, Func<T1, T2>)
If the option has a value, passes that option to the mapper function and returns that value
as a Some.
Declaration
public static NumericOption<T2> Map<T1, T2>(this NumericOption<T1> self, Func<T1, T2> mapper) where T1 : struct, INumber<T1> where T2 : struct, INumber<T2>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T1> | self | The option to map. |
| Func<T1, T2> | mapper | The function that maps the value contained in the option. |
Returns
| Type | Description |
|---|---|
| NumericOption<T2> | The mapped value as |
Type Parameters
| Name | Description |
|---|---|
| T1 | The type of the option. |
| T2 | The type returned by the mapper functions. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |
NoneNumeric<T>(T)
Returns None option typed to match value. The value is not
used except to determine the type of the option.
Declaration
public static NumericOption<T> NoneNumeric<T>(this T value) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| T | value | The value used to determine the type of the returned |
Returns
| Type | Description |
|---|---|
| NumericOption<T> | A |
Type Parameters
| Name | Description |
|---|---|
| T | The type used in the returned NumericOption<T>. |
OrElse<T>(NumericOption<T>, Func<NumericOption<T>>)
Returns self if it contains a value, otherwise calls elseFn and returns the result.
Declaration
public static NumericOption<T> OrElse<T>(this NumericOption<T> self, Func<NumericOption<T>> elseFn) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T> | self | The option. |
| Func<NumericOption<T>> | elseFn | The function that creates the alternate value if the option is |
Returns
| Type | Description |
|---|---|
| NumericOption<T> |
Type Parameters
| Name | Description |
|---|---|
| T | The type contained by the option. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |
Or<T>(NumericOption<T>, NumericOption<T>)
Returns self if it contains a value, otherwise returns other.
Arguments passed to or are eagerly evaluated; if you are passing the result of a function call, it is recommended to use OrElse<T>(NumericOption<T>, Func<NumericOption<T>>), which is lazily evaluated.
Declaration
public static NumericOption<T> Or<T>(this NumericOption<T> self, NumericOption<T> other) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T> | self | The first option. |
| NumericOption<T> | other | The replacement option to use if the first option is |
Returns
| Type | Description |
|---|---|
| NumericOption<T> |
Type Parameters
| Name | Description |
|---|---|
| T | The type contained by the option. |
SomeNumeric<T>(T)
Wraps the given number in a NumericOption<T>.
Declaration
public static NumericOption<T> SomeNumeric<T>(this T value) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| T | value | The value that will be contained in the |
Returns
| Type | Description |
|---|---|
| NumericOption<T> | The value wrapped in an NumericOption<T> |
Type Parameters
| Name | Description |
|---|---|
| T | The type used in the returned NumericOption<T>. |
UnwrapOrElse<T>(NumericOption<T>, Func<T>)
Returns the contained Some value or computes a default
using the provided defaultFactory.
Declaration
public static T UnwrapOrElse<T>(this NumericOption<T> self, Func<T> defaultFactory) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T> | self | The option to unwrap. |
| Func<T> | defaultFactory | A function that returns a default value to use if the option is |
Returns
| Type | Description |
|---|---|
| T |
Type Parameters
| Name | Description |
|---|---|
| T | The type of the option. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |
UnwrapOr<T>(NumericOption<T>, T)
Returns the contained Some value or a provided default.
Declaration
public static T UnwrapOr<T>(this NumericOption<T> self, T defaultValue) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T> | self | The option to bind. |
| T | defaultValue | The default value to return if the option is |
Returns
| Type | Description |
|---|---|
| T |
Type Parameters
| Name | Description |
|---|---|
| T | The type of the option. |
Values<T>(IEnumerable<NumericOption<T>>)
Flattens a sequence of NumericOption<T> into a sequence containing all inner values. Empty elements are discarded.
Declaration
public static IEnumerable<T> Values<T>(this IEnumerable<NumericOption<T>> self) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<NumericOption<T>> | self | The sequence of options. |
Returns
| Type | Description |
|---|---|
| IEnumerable<T> | A flattened sequence of values. |
Type Parameters
| Name | Description |
|---|---|
| T |
Xor<T>(NumericOption<T>, NumericOption<T>)
Returns Some if exactly one of self, other is Some, otherwise returns None.
Declaration
public static NumericOption<T> Xor<T>(this NumericOption<T> self, NumericOption<T> other) where T : struct, INumber<T>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T> | self | The option. |
| NumericOption<T> | other | The other option. |
Returns
| Type | Description |
|---|---|
| NumericOption<T> |
Type Parameters
| Name | Description |
|---|---|
| T | The type contained by the option. |
ZipWith<T1, T2, T3>(NumericOption<T1>, NumericOption<T2>, Func<T1, T2, T3>)
Zips this Option and another Option with function zipper.
If this option is Some(s) and other is Some(o), this method returns Some(zipper(s, o)). Otherwise, None is returned.
Declaration
public static NumericOption<T3> ZipWith<T1, T2, T3>(this NumericOption<T1> self, NumericOption<T2> other, Func<T1, T2, T3> zipper) where T1 : struct, INumber<T1> where T2 : struct, INumber<T2> where T3 : struct, INumber<T3>
Parameters
| Type | Name | Description |
|---|---|---|
| NumericOption<T1> | self | The first option. |
| NumericOption<T2> | other | The second option. |
| Func<T1, T2, T3> | zipper | A functon that combines values from the two options into a new type. |
Returns
| Type | Description |
|---|---|
| NumericOption<T3> | An option contianing the result of passing both values to the |
Type Parameters
| Name | Description |
|---|---|
| T1 | The type contained by the first option. |
| T2 | The type contained by the second option. |
| T3 | The type returned by the |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown if |