125125//! impl dyn MyTrait + '_ {
126126//! /// Get a reference to a field of the implementing struct.
127127//! pub fn get_context_by_ref<T: ?Sized + 'static>(&self) -> Option<&T> {
128- //! request_ref::<T, _ >(self)
128+ //! request_ref::<T>(self)
129129//! }
130130//! }
131131//!
@@ -799,7 +799,7 @@ pub trait Provider {
799799 /// impl Provider for SomeConcreteType {
800800 /// fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
801801 /// demand.provide_ref::<str>(&self.field)
802- /// .provide_value::<i32, _ >(|| self.num_field);
802+ /// .provide_value::<i32>(|| self.num_field);
803803 /// }
804804 /// }
805805 /// ```
@@ -817,17 +817,16 @@ pub trait Provider {
817817/// # #![feature(provide_any)]
818818/// use std::any::{Provider, request_value};
819819///
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()
822822/// }
823823/// ```
824824#[ 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 >
826826where
827827 T : ' static ,
828- P : Provider + ?Sized ,
829828{
830- request_by_type_tag :: < ' a , tags:: Value < T > , P > ( provider)
829+ request_by_type_tag :: < ' a , tags:: Value < T > > ( provider)
831830}
832831
833832/// Request a reference from the `Provider`.
@@ -840,24 +839,22 @@ where
840839/// # #![feature(provide_any)]
841840/// use std::any::{Provider, request_ref};
842841///
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()
845844/// }
846845/// ```
847846#[ 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 >
849848where
850849 T : ' static + ?Sized ,
851- P : Provider + ?Sized ,
852850{
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)
854852}
855853
856854/// 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 >
858856where
859857 I : tags:: Type < ' a > ,
860- P : Provider + ?Sized ,
861858{
862859 let mut tagged = TaggedOption :: < ' a , I > ( None ) ;
863860 provider. provide ( tagged. as_demand ( ) ) ;
@@ -896,17 +893,16 @@ impl<'a> Demand<'a> {
896893 ///
897894 /// impl Provider for SomeConcreteType {
898895 /// 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());
900897 /// }
901898 /// }
902899 /// ```
903900 #[ 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
905902 where
906903 T : ' static ,
907- F : FnOnce ( ) -> T ,
908904 {
909- self . provide_with :: < tags:: Value < T > , F > ( fulfil)
905+ self . provide_with :: < tags:: Value < T > > ( fulfil)
910906 }
911907
912908 /// Provide a reference, note that the referee type must be bounded by `'static`,
@@ -944,10 +940,9 @@ impl<'a> Demand<'a> {
944940 }
945941
946942 /// 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
948944 where
949945 I : tags:: Type < ' a > ,
950- F : FnOnce ( ) -> I :: Reified ,
951946 {
952947 if let Some ( res @ TaggedOption ( None ) ) = self . 0 . downcast_mut :: < I > ( ) {
953948 res. 0 = Some ( fulfil ( ) ) ;
0 commit comments