mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-04 20:54:13 +00:00
ea6daca3cb
Stabilize `type_name_of_val` Make the following API stable: ```rust // in core::any pub fn type_name_of_val<T: ?Sized>(_val: &T) -> &'static str ``` This is a convenience method to get the type name of a value, as opposed to `type_name` that takes a type as a generic. Const stability is not added because this relies on `type_name` which is also not const. That has a blocking issue https://github.com/rust-lang/rust/issues/97156. Wording was also changed to direct most of the details to `type_name` so we don't have as much duplicated documentation. Fixes tracking issue #66359. There were two main concerns in the tracking issue: 1. Naming: `type_name_of` and `type_name_of_val` seem like the only mentioned options. Differences in opinion here come from `std::mem::{size_of, align_of, size_of_val, align_of_val}`. This PR leaves the name as `type_name_of_val`, but I can change if desired since it is pretty verbose. 2. What this displays for `&dyn`: I don't think that having `type_name_of_val` function resolve those is worth the headache it would be, see https://github.com/rust-lang/rust/issues/66359#issuecomment-1718480774 for some workarounds. I also amended the docs wording to leave it open-ended, in case we have means to change that behavior in the future. ``@rustbot`` label -T-libs +T-libs-api +needs-fcp r? libs-api |
||
---|---|---|
.. | ||
auxiliary | ||
arguments.rs | ||
arguments.stderr | ||
assoc_item_ctxt.rs | ||
assoc_item_ctxt.stderr | ||
assoc_ty_bindings.rs | ||
cross-crate-codegen-attrs.rs | ||
cross-crate-define-and-use.rs | ||
cross-crate-fields.rs | ||
cross-crate-glob-hygiene.rs | ||
cross-crate-glob-hygiene.stderr | ||
cross-crate-methods.rs | ||
cross-crate-name-collision.rs | ||
cross-crate-name-hiding-2.rs | ||
cross-crate-name-hiding-2.stderr | ||
cross-crate-name-hiding.rs | ||
cross-crate-name-hiding.stderr | ||
cross-crate-redefine.rs | ||
cross-crate-redefine.stderr | ||
cross-crate-variants.rs | ||
dollar-crate-modern.rs | ||
duplicate_lifetimes.rs | ||
duplicate_lifetimes.stderr | ||
eager-from-opaque-2.rs | ||
eager-from-opaque.rs | ||
expansion-info-reset.rs | ||
expansion-info-reset.stderr | ||
extern-prelude-from-opaque-fail-2018.rs | ||
extern-prelude-from-opaque-fail-2018.stderr | ||
extern-prelude-from-opaque-fail.rs | ||
extern-prelude-from-opaque-fail.stderr | ||
fields-definition.rs | ||
fields-definition.stderr | ||
fields-move.rs | ||
fields-move.stderr | ||
fields-numeric-borrowck.rs | ||
fields-numeric-borrowck.stderr | ||
fields.rs | ||
fields.stderr | ||
for-loop.rs | ||
for-loop.stderr | ||
format-args.rs | ||
generate-mod.rs | ||
generate-mod.stderr | ||
generic_params.rs | ||
globs.rs | ||
globs.stderr | ||
hir-res-hygiene.rs | ||
hygiene-dodging-1.rs | ||
hygiene.rs | ||
hygienic-label-1.rs | ||
hygienic-label-1.stderr | ||
hygienic-label-2.rs | ||
hygienic-label-2.stderr | ||
hygienic-label-3.rs | ||
hygienic-label-3.stderr | ||
hygienic-label-4.rs | ||
hygienic-label-4.stderr | ||
hygienic-labels-in-let.rs | ||
hygienic-labels.rs | ||
impl_items-2.rs | ||
impl_items-2.stderr | ||
impl_items.rs | ||
impl_items.stderr | ||
intercrate.rs | ||
intercrate.stderr | ||
issue-15221.rs | ||
issue-32922.rs | ||
issue-40847.rs | ||
issue-44128.rs | ||
issue-47311.rs | ||
issue-47312.rs | ||
issue-61574-const-parameters.rs | ||
issue-77523-def-site-async-await.rs | ||
items.rs | ||
lambda-var-hygiene.rs | ||
legacy_interaction.rs | ||
lexical.rs | ||
local_inner_macros.rs | ||
macro-metavars-legacy.rs | ||
macro-metavars-transparent.rs | ||
missing-self-diag.rs | ||
missing-self-diag.stderr | ||
nested_macro_privacy.rs | ||
nested_macro_privacy.stderr | ||
nested-dollar-crate.rs | ||
no_implicit_prelude-2018.rs | ||
no_implicit_prelude-2018.stderr | ||
no_implicit_prelude-2021.rs | ||
no_implicit_prelude.rs | ||
no_implicit_prelude.stderr | ||
panic-location.rs | ||
panic-location.run.stderr | ||
pattern-macro.rs | ||
pattern-macro.stderr | ||
prelude-import-hygiene.rs | ||
privacy-early.rs | ||
privacy-early.stderr | ||
privacy.rs | ||
privacy.stderr | ||
rustc-macro-transparency.rs | ||
rustc-macro-transparency.stderr | ||
specialization.rs | ||
stdlib-prelude-from-opaque-early.rs | ||
stdlib-prelude-from-opaque-late.rs | ||
thread-local-not-in-prelude.rs | ||
trait_items-2.rs | ||
trait_items.rs | ||
trait_items.stderr | ||
traits-in-scope.rs | ||
transparent-basic.rs | ||
unpretty-debug.rs | ||
unpretty-debug.stdout | ||
wrap_unhygienic_example.rs | ||
xcrate.rs |