about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbdbai <bdbaiapp@163.com>2021-12-30 21:55:18 +0800
committerbdbai <bdbaiapp@163.com>2021-12-30 21:55:18 +0800
commitce31cbc7a35131d0386f03982d7cac8786f574f4 (patch)
tree4f8915cd695563e3a8cbddd54bd936d4bcf85f38
parentef472f1dc93ee4c953e296e7316ead7f3de4c09f (diff)
downloadrust-ce31cbc7a35131d0386f03982d7cac8786f574f4.tar.gz
rust-ce31cbc7a35131d0386f03982d7cac8786f574f4.zip
use generic params for arc_new_cyclic
-rw-r--r--library/alloc/src/rc.rs5
-rw-r--r--library/alloc/src/sync.rs5
2 files changed, 8 insertions, 2 deletions
diff --git a/library/alloc/src/rc.rs b/library/alloc/src/rc.rs
index b92fbac36d9..e373be5bb6e 100644
--- a/library/alloc/src/rc.rs
+++ b/library/alloc/src/rc.rs
@@ -415,7 +415,10 @@ impl<T> Rc<T> {
     /// [`upgrade`]: Weak::upgrade
     #[cfg(not(no_global_oom_handling))]
     #[stable(feature = "arc_new_cyclic", since = "1.59.0")]
-    pub fn new_cyclic(data_fn: impl FnOnce(&Weak<T>) -> T) -> Rc<T> {
+    pub fn new_cyclic<F>(data_fn: F) -> Rc<T>
+    where
+        F: FnOnce(&Weak<T>) -> T,
+    {
         // Construct the inner in the "uninitialized" state with a single
         // weak reference.
         let uninit_ptr: NonNull<_> = Box::leak(box RcBox {
diff --git a/library/alloc/src/sync.rs b/library/alloc/src/sync.rs
index 4deec0146e4..aba45f36c15 100644
--- a/library/alloc/src/sync.rs
+++ b/library/alloc/src/sync.rs
@@ -392,7 +392,10 @@ impl<T> Arc<T> {
     #[cfg(not(no_global_oom_handling))]
     #[inline]
     #[stable(feature = "arc_new_cyclic", since = "1.59.0")]
-    pub fn new_cyclic(data_fn: impl FnOnce(&Weak<T>) -> T) -> Arc<T> {
+    pub fn new_cyclic<F>(data_fn: F) -> Arc<T>
+    where
+        F: FnOnce(&Weak<T>) -> T,
+    {
         // Construct the inner in the "uninitialized" state with a single
         // weak reference.
         let uninit_ptr: NonNull<_> = Box::leak(box ArcInner {