Remove Return::Unit variant (#15484)
# Objective - Fixes #15447 ## Solution - Remove the `Return::Unit` variant and use a `Return::Owned` variant holding a unit `()` type. ## Migration Guide - Removed the `Return::Unit` variant; use `Return::unit()` instead. --------- Co-authored-by: Gino Valente <49806985+MrGVSV@users.noreply.github.com>
This commit is contained in:
parent
1175cf7920
commit
7ee5143d45
@ -6,9 +6,9 @@ use crate::PartialReflect;
|
|||||||
/// [`DynamicFunctionMut`]: crate::func::DynamicFunctionMut
|
/// [`DynamicFunctionMut`]: crate::func::DynamicFunctionMut
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Return<'a> {
|
pub enum Return<'a> {
|
||||||
/// The function returns nothing (i.e. it returns `()`).
|
|
||||||
Unit,
|
|
||||||
/// The function returns an owned value.
|
/// The function returns an owned value.
|
||||||
|
///
|
||||||
|
/// This includes functions that return nothing (i.e. they return `()`).
|
||||||
Owned(Box<dyn PartialReflect>),
|
Owned(Box<dyn PartialReflect>),
|
||||||
/// The function returns a reference to a value.
|
/// The function returns a reference to a value.
|
||||||
Ref(&'a dyn PartialReflect),
|
Ref(&'a dyn PartialReflect),
|
||||||
@ -17,9 +17,17 @@ pub enum Return<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Return<'a> {
|
impl<'a> Return<'a> {
|
||||||
/// Returns `true` if the return value is [`Self::Unit`].
|
/// Creates an [`Owned`](Self::Owned) unit (`()`) type.
|
||||||
|
pub fn unit() -> Self {
|
||||||
|
Self::Owned(Box::new(()))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns `true` if the return value is an [`Owned`](Self::Owned) unit (`()`) type.
|
||||||
pub fn is_unit(&self) -> bool {
|
pub fn is_unit(&self) -> bool {
|
||||||
matches!(self, Return::Unit)
|
match self {
|
||||||
|
Return::Owned(val) => val.represents::<()>(),
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Unwraps the return value as an owned value.
|
/// Unwraps the return value as an owned value.
|
||||||
@ -81,7 +89,7 @@ pub trait IntoReturn {
|
|||||||
|
|
||||||
impl IntoReturn for () {
|
impl IntoReturn for () {
|
||||||
fn into_return<'a>(self) -> Return<'a> {
|
fn into_return<'a>(self) -> Return<'a> {
|
||||||
Return::Unit
|
Return::unit()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user