File tree Expand file tree Collapse file tree 2 files changed +12
-0
lines changed Expand file tree Collapse file tree 2 files changed +12
-0
lines changed Original file line number Diff line number Diff line change 123123#![ feature( fmt_internals) ]
124124#![ feature( fn_traits) ]
125125#![ feature( formatting_options) ]
126+ #![ feature( from_iter_default) ]
126127#![ feature( generic_atomic) ]
127128#![ feature( hasher_prefixfree_extras) ]
128129#![ feature( inplace_iteration) ]
Original file line number Diff line number Diff line change @@ -152,6 +152,17 @@ pub trait FromIterator<A>: Sized {
152152 fn from_iter < T : IntoIterator < Item = A > > ( iter : T ) -> Self ;
153153}
154154
155+ // 为同时实现 Default 和 Extend 的类型实现 FromIterator
156+ #[ unstable( feature = "from_iter_default" , issue = "58659" ) ]
157+ impl < T , A : Default + Extend < T > > FromIterator < T > for A {
158+ #[ rustc_diagnostic_item = "from_iter_default" ]
159+ default fn from_iter < I : IntoIterator < Item = T > > ( iter : I ) -> Self {
160+ let mut collection = A :: default ( ) ;
161+ collection. extend ( iter) ;
162+ collection
163+ }
164+ }
165+
155166/// Conversion into an [`Iterator`].
156167///
157168/// By implementing `IntoIterator` for a type, you define how it will be
You can’t perform that action at this time.
0 commit comments