Skip to content

Commit 8760874

Browse files
committed
Auto merge of #30928 - sfackler:any-unsized, r=aturon
This is a bit weird since unsized types can't be used in trait objects, but Any is *also* used as pure marker trait since Reflect isn't stable. There are many cases (e.g. TypeMap) where all you need is a TypeId. r? @aturon
2 parents 8846336 + 5d2275d commit 8760874

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/libcore/any.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ pub trait Any: Reflect + 'static {
9999
}
100100

101101
#[stable(feature = "rust1", since = "1.0.0")]
102-
impl<T: Reflect + 'static> Any for T {
102+
impl<T: Reflect + 'static + ?Sized > Any for T {
103103
fn get_type_id(&self) -> TypeId { TypeId::of::<T>() }
104104
}
105105

src/libcoretest/any.rs

+5
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,11 @@ fn any_fixed_vec() {
119119
assert!(!test.is::<[usize; 10]>());
120120
}
121121

122+
#[test]
123+
fn any_unsized() {
124+
fn is_any<T: Any + ?Sized>() {}
125+
is_any::<[i32]>();
126+
}
122127

123128
#[bench]
124129
fn bench_downcast_ref(b: &mut Bencher) {

0 commit comments

Comments
 (0)