Skip to content

Attribute cleanup #534

Closed
Closed
@ehuss

Description

@ehuss

I would like to regroup and update the attributes page, and I would like some feedback on how to best improve it. Some of my goals are:

  • Every attribute should have a dedicated section somewhere in the reference, making it easy to link to them.
  • Every attribute should explain the format of its syntax for its meta input (this is finished in my local branch).
  • Every attribute should be documented well enough to understand what it does and how it works.
  • Remove the "Crate-only" and "Misc" sections (or at least shrink "misc").
  • Ensure all the "Attributes on" sections exist and are complete (Add "Attributes on X" for various places attributes are allowed #355).
  • Maybe avoid using attributes.md as a dumping ground for random attributes?

I think the last point may be the most debatable. Right now, to me, it appears as just a giant page that is difficult to navigate. I think it would be good to move the details off to separate pages, and just have an index in attributes.md that links to where to find each one. This is already done for about half the attributes. Unfortunately it's not really clear where some of the other attributes should live.

Here is a preliminary outline of how I think such an index would look, and where the attributes link to.

  • Conditional Compilation
    • cfg (conditional-compilation.md)
    • cfg_attr (conditional-compilation.md)
  • Testing
    • test
    • ignore
    • should_panic
  • Derive
    • derive
    • automatically_derived (currently undocumented)
  • Macro-related
    • macro_use (FUTURE macros-by-example.md)
    • macro_export (FUTURE macros-by-example.md)
    • proc_macro (procedural-macros.md)
    • proc_macro_derive (procedural-macros.md)
    • proc_macro_attribute (procedural-macros.md)
  • Lint Check
    • allow
    • deny
    • forbid
    • warn
    • must_use
    • Tool lints
  • Linking, Symbols, and FFI
    • link (external-blocks.md)
    • link_name (external-blocks.md???)
    • no_link (MAYBE extern-crates.md?)
    • repr (type-layout.md)
    • crate_type (linkage.md)
    • no_main
    • no_start
    • export_name (abi.md)
    • link_section (abi.md)
    • no_mangle (abi.md)
    • used (abi.md)
    • crate_name
    • windows_subsystem
  • Code Generation
    • inline
    • cold
    • no_builtins
    • target_feature (undocumented)
  • Compiler Settings
    • feature (undocumented)
    • recursion_limit
    • type_length_limit (undocumented)
  • Documentation
    • doc (rustdoc book)
  • Preludes
    • no_std (crates-and-source-files.md)
    • no_implicit_prelude (modules.md)
  • Deprecation
    • deprecated (maybe move this to lints or documentation?)
  • path (modules.md)
  • Runtime
    • panic_handler (runtime.md)
    • global_allocator (??? is this runtime?)
  • Tool

I'm thinking maybe just moving some of these to dedicated pages (testing, lints, code generation, etc.)

Any thoughts? Ideas on how to better organize? Does this sound terrible?

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-attributesArea: AttributesEnhancementImprovement in a non-prose section of the bookOrganizationReorganize existing information in the book.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions