-
-
Notifications
You must be signed in to change notification settings - Fork 14.3k
Support arrays in type reflection #151031
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please pay special attention to my changes in this file, as this is where I feel least confident in my understanding of the code!
This comment has been minimized.
This comment has been minimized.
|
@rustbot author |
|
Reminder, once the PR becomes ready for a review, use |
|
@rustbot ready |
|
@bors r+ rollup |
Support arrays in type reflection Tracking issue: rust-lang#146922 This PR adds support for inspecting arrays `[T; N]` through type reflection. It does so by adding `TypeKind::Array` and the `Array` struct: ```rust pub struct Array { pub element_ty: TypeId, pub len: usize, } ``` This can be used to inspect arrays like so: ```rust match const { Type::of::<[u16; 4]>() }.kind { TypeKind::Array(array) => { assert_eq!(array.element_ty, TypeId::of::<u16>()); assert_eq!(array.len, 4); } _ => unreachable!(), } ``` r? @oli-obk
Support arrays in type reflection Tracking issue: rust-lang#146922 This PR adds support for inspecting arrays `[T; N]` through type reflection. It does so by adding `TypeKind::Array` and the `Array` struct: ```rust pub struct Array { pub element_ty: TypeId, pub len: usize, } ``` This can be used to inspect arrays like so: ```rust match const { Type::of::<[u16; 4]>() }.kind { TypeKind::Array(array) => { assert_eq!(array.element_ty, TypeId::of::<u16>()); assert_eq!(array.len, 4); } _ => unreachable!(), } ``` r? @oli-obk
Rollup of 13 pull requests Successful merges: - #150587 (triagebot: add A-rustdoc-js autolabel) - #150677 (Improve std::path::Path::join documentation) - #150737 (diagnostics: make implicit Sized bounds explicit in E0277) - #150771 (Remove legacy homu `try` and `auto` branch mentions) - #150840 (Make `--print=check-cfg` output compatible `--check-cfg` arguments) - #150915 (Regression test for type params on eii) - #151017 (Port the rustc dump attributes to the attribute parser) - #151019 (Make `Type::of` support unsized types) - #151031 (Support arrays in type reflection) - #151043 (armv7-unknown-linux-uclibceabihf.md: Fix bootstrap.toml syntax) - #151052 (ui: add regression test for macro resolution ICE (issue #150711)) - #151053 (Reduce flakyness for `tests/rustdoc-gui/notable-trait.goml`) - #151055 (Emit error instead of delayed bug when meeting mismatch type for const array) r? @ghost
Tracking issue: #146922
This PR adds support for inspecting arrays
[T; N]through type reflection. It does so by addingTypeKind::Arrayand theArraystruct:This can be used to inspect arrays like so:
r? @oli-obk