Skip to content

Commit da11ff3

Browse files
committed
core::any: replace some unstable generic types with impl Trait
Signed-off-by: Nick Cameron <[email protected]>
1 parent 4008dd8 commit da11ff3

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

library/core/src/any.rs

+15-20
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
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>
826826
where
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>
849848
where
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>
858856
where
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

Comments
 (0)