Skip to content
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

Design meeting: Rust issues encountered by new Rust users in the Bevy project #229

Open
joshtriplett opened this issue Oct 15, 2023 · 3 comments
Labels
meeting-proposal Proposal for a lang team design meeting T-lang

Comments

@joshtriplett
Copy link
Member

joshtriplett commented Oct 15, 2023

Summary

The Bevy project gets a particularly large number of new Rust users, who are learning Rust in order to use Bevy. Bevy also gets people programming for the first time, and trying to learn Rust as a first language. They collected a pile of feedback on things those new Rust users find challenging. We should arrange a meeting for @alice-i-cecile and other Bevy leaders to bring some of those issues to us.

We should try to avoid delving too deep into solution space on any one issue, and should try to hear out the breadth of issues, with particular attention to any that we aren't already thinking about.

Background reading

None yet. We could capture details from the Discord discussion into a document.

About this issue

This issue corresponds to a lang-team design meeting proposal. It corresponds to a possible topic of discussion that may be scheduled for deeper discussion during one of our design meetings.

@joshtriplett joshtriplett added meeting-proposal Proposal for a lang team design meeting T-lang labels Oct 15, 2023
@alice-i-cecile
Copy link
Contributor

I've gathered feedback from the community in this Discord thread, if you're interested in a sneak peek.

@Jules-Bertholet
Copy link
Contributor

Highlights of Discord thread:

  • no variadic generics (ugly macros, terrible error messages, cluttered docs…)
  • having to install MSVC on Windows (though maybe things are better now that rustup handles it?)
  • orphan rules, deriving traits on 3rd-party types
  • object safety, needing to go back and redesign traits
  • learning macros
  • derive + PhantomData footgun (lack of perfect derive)
  • cargo features aren't clearly listed in rustdoc
  • lifetimes (where/when do they need to be annotated)
  • async
  • functional update syntax (...default() })
  • missing const floats, const traits
  • examples in rustdoc
  • showing the value of Default::default() in rustdoc
  • dynamic linking (inscrutable error messages)
  • closure capture rules
  • field init shorthand
  • target folder not cleaned up after compiler updates
  • rust-analyzer and cargo competing for locks on the target folder, grows without bound
  • src links don't appear for bevy on docs.rs (due to dynamic linking stuff?)
  • browsing all implementors of a trait (rustdoc list is cluttered, hard to skim)
  • people don't know about cargo doc --open
  • hard to get list of all methods available on a type (including from important traits)
  • reborrowing (and lack of it with custom smart pointers)
  • newtype/delegation is cumbersome, .0 spam

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meeting-proposal Proposal for a lang team design meeting T-lang
Projects
Status: Needs triage
Development

No branches or pull requests

4 participants