How was the transition from HRTBs to lifetime GATs for you?

3 years ago by Sibbo to c/rustlang

I have so far transformed two crates that have iterable-like properties in traits from using HRTBs to GATs. And I was seriously surprised how easy it was. The compiler gave me all the hints I needed to make everything compile. And there were only minor changes required, like removing lifetime arguments from traits or changing the type definition in trait implementations.

I wonder, has anyone encountered any difficulties when transforming their code from HRTBs to GATs?

load all comments
chrysn 1 point 3 years ago

@Sibbo It's been a wild ride ridden with back-and-forths about where where Self: 'a goes and whether it's needed, but that's largely past (now that it's stable), and my use case (the coap-message crate) works fine with it.

path: 0 87689, hotness: undefined, score: 1, children: 0
rustlang
rustlang

@lemmyrs.org

login for more options
709
114
1

Rules [Developing]

Observe our code of conduct

  • Strive to treat others with respect, patience, kindness, and empathy.
  • We observe the Rust Project Code of Conduct.
  • Submissions must be on-topic
  • Posts must reference Rust or relate to things using Rust. For content that does not, use a text post to explain its relevance.
  • Post titles should include useful context.
  • For Rust questions, use the stickied Q&A thread. [TBD]
  • Arts-and-crafts posts are permitted on weekends.
  • No meta posts; message the mods instead.

Constructive criticism only

  • Criticism is encouraged, though it must be constructive, useful and actionable.
  • If criticizing a project on GitHub, you may not link directly to the project’s issue tracker. Please create a read-only mirror and link that instead.
  • Keep things in perspective
  • A programming language is rarely worth getting worked up over.
  • No zealotry or fanaticism.
  • Be charitable in intent. Err on the side of giving others the benefit of the doubt.

No endless relitigation

  • Avoid re-treading topics that have been long-settled or utterly exhausted.
  • Avoid bikeshedding.
  • This is not an official Rust forum, and cannot fulfill feature requests. Use the official venues for that.

No low-effort content

  • Showing off your new projects is fine

No memes or image macros

  • Please find other communities to post memes

No NSFW Content

  • There are many other NSFW communities, let’s keep this related to the language

go to feed...