125
125
//! impl dyn MyTrait + '_ {
126
126
//! /// Get a reference to a field of the implementing struct.
127
127
//! pub fn get_context_by_ref<T: ?Sized + 'static>(&self) -> Option<&T> {
128
- //! request_ref::<T, _ >(self)
128
+ //! request_ref::<T>(self)
129
129
//! }
130
130
//! }
131
131
//!
@@ -799,7 +799,7 @@ pub trait Provider {
799
799
/// impl Provider for SomeConcreteType {
800
800
/// fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
801
801
/// demand.provide_ref::<str>(&self.field)
802
- /// .provide_value::<i32, _ >(|| self.num_field);
802
+ /// .provide_value::<i32>(|| self.num_field);
803
803
/// }
804
804
/// }
805
805
/// ```
@@ -817,17 +817,16 @@ pub trait Provider {
817
817
/// # #![feature(provide_any)]
818
818
/// use std::any::{Provider, request_value};
819
819
///
820
- /// fn get_string<P: Provider> (provider: &P ) -> String {
821
- /// request_value::<String, _ >(provider).unwrap()
820
+ /// fn get_string(provider: &impl Provider ) -> String {
821
+ /// request_value::<String>(provider).unwrap()
822
822
/// }
823
823
/// ```
824
824
#[ unstable( feature = "provide_any" , issue = "96024" ) ]
825
- pub fn request_value < ' a , T , P > ( provider : & ' a P ) -> Option < T >
825
+ pub fn request_value < ' a , T > ( provider : & ' a ( impl Provider + ? Sized ) ) -> Option < T >
826
826
where
827
827
T : ' static ,
828
- P : Provider + ?Sized ,
829
828
{
830
- request_by_type_tag :: < ' a , tags:: Value < T > , P > ( provider)
829
+ request_by_type_tag :: < ' a , tags:: Value < T > > ( provider)
831
830
}
832
831
833
832
/// Request a reference from the `Provider`.
@@ -840,24 +839,22 @@ where
840
839
/// # #![feature(provide_any)]
841
840
/// use std::any::{Provider, request_ref};
842
841
///
843
- /// fn get_str<P: Provider> (provider: &P ) -> &str {
844
- /// request_ref::<str, _ >(provider).unwrap()
842
+ /// fn get_str(provider: &impl Provider ) -> &str {
843
+ /// request_ref::<str>(provider).unwrap()
845
844
/// }
846
845
/// ```
847
846
#[ unstable( feature = "provide_any" , issue = "96024" ) ]
848
- pub fn request_ref < ' a , T , P > ( provider : & ' a P ) -> Option < & ' a T >
847
+ pub fn request_ref < ' a , T > ( provider : & ' a ( impl Provider + ? Sized ) ) -> Option < & ' a T >
849
848
where
850
849
T : ' static + ?Sized ,
851
- P : Provider + ?Sized ,
852
850
{
853
- request_by_type_tag :: < ' a , tags:: Ref < tags:: MaybeSizedValue < T > > , P > ( provider)
851
+ request_by_type_tag :: < ' a , tags:: Ref < tags:: MaybeSizedValue < T > > > ( provider)
854
852
}
855
853
856
854
/// Request a specific value by tag from the `Provider`.
857
- fn request_by_type_tag < ' a , I , P > ( provider : & ' a P ) -> Option < I :: Reified >
855
+ fn request_by_type_tag < ' a , I > ( provider : & ' a ( impl Provider + ? Sized ) ) -> Option < I :: Reified >
858
856
where
859
857
I : tags:: Type < ' a > ,
860
- P : Provider + ?Sized ,
861
858
{
862
859
let mut tagged = TaggedOption :: < ' a , I > ( None ) ;
863
860
provider. provide ( tagged. as_demand ( ) ) ;
@@ -896,17 +893,16 @@ impl<'a> Demand<'a> {
896
893
///
897
894
/// impl Provider for SomeConcreteType {
898
895
/// fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
899
- /// demand.provide_value::<String, _ >(|| self.field.clone());
896
+ /// demand.provide_value::<String>(|| self.field.clone());
900
897
/// }
901
898
/// }
902
899
/// ```
903
900
#[ unstable( feature = "provide_any" , issue = "96024" ) ]
904
- pub fn provide_value < T , F > ( & mut self , fulfil : F ) -> & mut Self
901
+ pub fn provide_value < T > ( & mut self , fulfil : impl FnOnce ( ) -> T ) -> & mut Self
905
902
where
906
903
T : ' static ,
907
- F : FnOnce ( ) -> T ,
908
904
{
909
- self . provide_with :: < tags:: Value < T > , F > ( fulfil)
905
+ self . provide_with :: < tags:: Value < T > > ( fulfil)
910
906
}
911
907
912
908
/// Provide a reference, note that the referee type must be bounded by `'static`,
@@ -944,10 +940,9 @@ impl<'a> Demand<'a> {
944
940
}
945
941
946
942
/// Provide a value with the given `Type` tag, using a closure to prevent unnecessary work.
947
- fn provide_with < I , F > ( & mut self , fulfil : F ) -> & mut Self
943
+ fn provide_with < I > ( & mut self , fulfil : impl FnOnce ( ) -> I :: Reified ) -> & mut Self
948
944
where
949
945
I : tags:: Type < ' a > ,
950
- F : FnOnce ( ) -> I :: Reified ,
951
946
{
952
947
if let Some ( res @ TaggedOption ( None ) ) = self . 0 . downcast_mut :: < I > ( ) {
953
948
res. 0 = Some ( fulfil ( ) ) ;
0 commit comments