mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Remove unused ConstFn(Once)Closure
structs.
This commit is contained in:
parent
6267c60f6a
commit
d78bc41785
@ -1,56 +1,5 @@
|
||||
use crate::marker::Destruct;
|
||||
|
||||
/// Struct representing a closure with owned data.
|
||||
///
|
||||
/// Example:
|
||||
/// ```no_build
|
||||
/// use crate::const_closure::ConstFnOnceClosure;
|
||||
/// const fn imp(state: i32, (arg,): (i32,)) -> i32 {
|
||||
/// state + arg
|
||||
/// }
|
||||
/// let i = 5;
|
||||
/// let cl = ConstFnOnceClosure::new(i, imp);
|
||||
///
|
||||
/// assert!(7 == cl(2));
|
||||
/// ```
|
||||
pub(crate) struct ConstFnOnceClosure<CapturedData, Function> {
|
||||
data: CapturedData,
|
||||
func: Function,
|
||||
}
|
||||
|
||||
impl<CapturedData, Function> ConstFnOnceClosure<CapturedData, Function> {
|
||||
/// Function for creating a new closure.
|
||||
///
|
||||
/// `data` is the owned data that is captured from the environment (this data must be `~const Destruct`).
|
||||
///
|
||||
/// `func` is the function of the closure, it gets the data and a tuple of the arguments closure
|
||||
/// and return the return value of the closure.
|
||||
#[allow(dead_code)]
|
||||
pub(crate) const fn new<ClosureArguments, ClosureReturnValue>(
|
||||
data: CapturedData,
|
||||
func: Function,
|
||||
) -> Self
|
||||
where
|
||||
CapturedData: ~const Destruct,
|
||||
Function: ~const Fn(CapturedData, ClosureArguments) -> ClosureReturnValue + ~const Destruct,
|
||||
{
|
||||
Self { data, func }
|
||||
}
|
||||
}
|
||||
|
||||
impl<CapturedData, ClosureArguments, Function> const FnOnce<ClosureArguments>
|
||||
for ConstFnOnceClosure<CapturedData, Function>
|
||||
where
|
||||
CapturedData: ~const Destruct,
|
||||
Function: ~const Fn<(CapturedData, ClosureArguments)> + ~const Destruct,
|
||||
{
|
||||
type Output = Function::Output;
|
||||
|
||||
extern "rust-call" fn call_once(self, args: ClosureArguments) -> Self::Output {
|
||||
(self.func)(self.data, args)
|
||||
}
|
||||
}
|
||||
|
||||
/// Struct representing a closure with mutably borrowed data.
|
||||
///
|
||||
/// Example:
|
||||
@ -112,77 +61,3 @@ where
|
||||
(self.func)(self.data, args)
|
||||
}
|
||||
}
|
||||
|
||||
/// Struct representing a closure with borrowed data.
|
||||
///
|
||||
/// Example:
|
||||
/// ```no_build
|
||||
/// use crate::const_closure::ConstFnClosure;
|
||||
///
|
||||
/// const fn imp(state: &i32, (arg,): (i32,)) -> i32 {
|
||||
/// *state + arg
|
||||
/// }
|
||||
/// let i = 5;
|
||||
/// let cl = ConstFnClosure::new(&i, imp);
|
||||
///
|
||||
/// assert!(7 == cl(2));
|
||||
/// assert!(6 == cl(1));
|
||||
/// ```
|
||||
pub(crate) struct ConstFnClosure<'a, CapturedData: ?Sized, Function> {
|
||||
data: &'a CapturedData,
|
||||
func: Function,
|
||||
}
|
||||
|
||||
impl<'a, CapturedData: ?Sized, Function> ConstFnClosure<'a, CapturedData, Function> {
|
||||
/// Function for creating a new closure.
|
||||
///
|
||||
/// `data` is the a mutable borrow of data that is captured from the environment.
|
||||
///
|
||||
/// `func` is the function of the closure, it gets the data and a tuple of the arguments closure
|
||||
/// and return the return value of the closure.
|
||||
#[allow(dead_code)]
|
||||
pub(crate) const fn new<ClosureArguments, ClosureReturnValue>(
|
||||
data: &'a CapturedData,
|
||||
func: Function,
|
||||
) -> Self
|
||||
where
|
||||
Function: ~const Fn(&CapturedData, ClosureArguments) -> ClosureReturnValue,
|
||||
{
|
||||
Self { data, func }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, CapturedData: ?Sized, Function, ClosureArguments, ClosureReturnValue> const
|
||||
FnOnce<ClosureArguments> for ConstFnClosure<'a, CapturedData, Function>
|
||||
where
|
||||
Function: ~const Fn(&CapturedData, ClosureArguments) -> ClosureReturnValue + ~const Destruct,
|
||||
{
|
||||
type Output = ClosureReturnValue;
|
||||
|
||||
extern "rust-call" fn call_once(mut self, args: ClosureArguments) -> Self::Output {
|
||||
self.call_mut(args)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, CapturedData: ?Sized, Function, ClosureArguments, ClosureReturnValue> const
|
||||
FnMut<ClosureArguments> for ConstFnClosure<'a, CapturedData, Function>
|
||||
where
|
||||
Function: ~const Fn(&CapturedData, ClosureArguments) -> ClosureReturnValue,
|
||||
{
|
||||
extern "rust-call" fn call_mut(&mut self, args: ClosureArguments) -> Self::Output {
|
||||
self.call(args)
|
||||
}
|
||||
}
|
||||
|
||||
impl<
|
||||
'a,
|
||||
CapturedData: ?Sized,
|
||||
Function: ~const Fn(&CapturedData, ClosureArguments) -> ClosureReturnValue,
|
||||
ClosureArguments,
|
||||
ClosureReturnValue,
|
||||
> const Fn<ClosureArguments> for ConstFnClosure<'a, CapturedData, Function>
|
||||
{
|
||||
extern "rust-call" fn call(&self, args: ClosureArguments) -> Self::Output {
|
||||
(self.func)(self.data, args)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user