Function Subspace :: sus :: construct :: into
Converts from the given value to whatever a receiver requires.
The result will be receivable if Into<FromType, ToType>
is satisfied where ToType
is deduced by
the type constructed from the return value of into
.
The value returned by into
should be immediately converted into the
desired type, and never held as an lvalue itself. The returned type holds a
reference to the input that is used to construct the deduced ToType
from
it.
If the argument to into
is Copy
then it will be
copied if it is an lvalue or const. If the argument to into
is an rvalue,
it will be moved when constructing the ToType
.
Examples
The into
function deduces the target type while performing an explicit
conversion via the From
concept (and thus a
static from
method on the target type).
auto f = [](Option<i32> i) { return i.unwrap_or(-1); };
auto num = 3_i32;
// Option<T> can be converted into from its inner type T.
sus_check(f(sus::into(num)) == 3);
The Into
concept allows generic code to accept
any input type that can be explicitly converted into the target type. The
body of the function can use the into
function to
perform the conversion.
// f() accepts anything that can be converted to Option<i32> via into().
auto f = [](Into<Option<i32>> auto in) { return Option<i32>(sus::into(in)); };
auto num = 3_i32;
// num will be passed to Option<i32>::from() inside f().
sus_check(f(num).unwrap_or(-1) == 3);