File tree Expand file tree Collapse file tree 4 files changed +6
-50
lines changed Expand file tree Collapse file tree 4 files changed +6
-50
lines changed Original file line number Diff line number Diff line change @@ -1749,7 +1749,7 @@ struct WeakInner<'a> {
17491749 strong : & ' a Cell < usize > ,
17501750}
17511751
1752- impl < T : ? Sized > Weak < T > {
1752+ impl < T > Weak < T > {
17531753 /// Returns a raw pointer to the object `T` pointed to by this `Weak<T>`.
17541754 ///
17551755 /// The pointer is valid only if there are some strong references. The pointer may be dangling,
@@ -1882,7 +1882,9 @@ impl<T: ?Sized> Weak<T> {
18821882 // SAFETY: we now have recovered the original Weak pointer, so can create the Weak.
18831883 Weak { ptr : unsafe { NonNull :: new_unchecked ( ptr) } }
18841884 }
1885+ }
18851886
1887+ impl < T : ?Sized > Weak < T > {
18861888 /// Attempts to upgrade the `Weak` pointer to an [`Rc`], delaying
18871889 /// dropping of the inner value if successful.
18881890 ///
Original file line number Diff line number Diff line change @@ -208,30 +208,6 @@ fn into_from_weak_raw() {
208208 }
209209}
210210
211- #[ test]
212- fn test_into_from_weak_raw_unsized ( ) {
213- use std:: fmt:: Display ;
214- use std:: string:: ToString ;
215-
216- let arc: Rc < str > = Rc :: from ( "foo" ) ;
217- let weak: Weak < str > = Rc :: downgrade ( & arc) ;
218-
219- let ptr = Weak :: into_raw ( weak. clone ( ) ) ;
220- let weak2 = unsafe { Weak :: from_raw ( ptr) } ;
221-
222- assert_eq ! ( unsafe { & * ptr } , "foo" ) ;
223- assert ! ( weak. ptr_eq( & weak2) ) ;
224-
225- let arc: Rc < dyn Display > = Rc :: new ( 123 ) ;
226- let weak: Weak < dyn Display > = Rc :: downgrade ( & arc) ;
227-
228- let ptr = Weak :: into_raw ( weak. clone ( ) ) ;
229- let weak2 = unsafe { Weak :: from_raw ( ptr) } ;
230-
231- assert_eq ! ( unsafe { & * ptr } . to_string( ) , "123" ) ;
232- assert ! ( weak. ptr_eq( & weak2) ) ;
233- }
234-
235211#[ test]
236212fn get_mut ( ) {
237213 let mut x = Rc :: new ( 3 ) ;
Original file line number Diff line number Diff line change @@ -1535,7 +1535,7 @@ struct WeakInner<'a> {
15351535 strong : & ' a atomic:: AtomicUsize ,
15361536}
15371537
1538- impl < T : ? Sized > Weak < T > {
1538+ impl < T > Weak < T > {
15391539 /// Returns a raw pointer to the object `T` pointed to by this `Weak<T>`.
15401540 ///
15411541 /// The pointer is valid only if there are some strong references. The pointer may be dangling,
@@ -1668,7 +1668,9 @@ impl<T: ?Sized> Weak<T> {
16681668 // SAFETY: we now have recovered the original Weak pointer, so can create the Weak.
16691669 unsafe { Weak { ptr : NonNull :: new_unchecked ( ptr) } }
16701670 }
1671+ }
16711672
1673+ impl < T : ?Sized > Weak < T > {
16721674 /// Attempts to upgrade the `Weak` pointer to an [`Arc`], delaying
16731675 /// dropping of the inner value if successful.
16741676 ///
Original file line number Diff line number Diff line change @@ -158,30 +158,6 @@ fn into_from_weak_raw() {
158158 }
159159}
160160
161- #[ test]
162- fn test_into_from_weak_raw_unsized ( ) {
163- use std:: fmt:: Display ;
164- use std:: string:: ToString ;
165-
166- let arc: Arc < str > = Arc :: from ( "foo" ) ;
167- let weak: Weak < str > = Arc :: downgrade ( & arc) ;
168-
169- let ptr = Weak :: into_raw ( weak. clone ( ) ) ;
170- let weak2 = unsafe { Weak :: from_raw ( ptr) } ;
171-
172- assert_eq ! ( unsafe { & * ptr } , "foo" ) ;
173- assert ! ( weak. ptr_eq( & weak2) ) ;
174-
175- let arc: Arc < dyn Display > = Arc :: new ( 123 ) ;
176- let weak: Weak < dyn Display > = Arc :: downgrade ( & arc) ;
177-
178- let ptr = Weak :: into_raw ( weak. clone ( ) ) ;
179- let weak2 = unsafe { Weak :: from_raw ( ptr) } ;
180-
181- assert_eq ! ( unsafe { & * ptr } . to_string( ) , "123" ) ;
182- assert ! ( weak. ptr_eq( & weak2) ) ;
183- }
184-
185161#[ test]
186162fn test_cowarc_clone_make_mut ( ) {
187163 let mut cow0 = Arc :: new ( 75 ) ;
You can’t perform that action at this time.
0 commit comments