HackerFriction Feedback

Products · Product

Rust

Raised as a usability problem by 640 people on Hacker News over 16 years (2011–2026), in 614 threads.

Ranked by people · period

  1. 1
    Heavy sigil syntax makes code hard to readUnreviewed

    7 people this year · 7 threads

  2. 2
    Compiler takes too long on every runUnreviewed

    4 people this year · 4 threads

  1. 1
    Heavy sigil syntax makes code hard to readUnreviewed

    47 people in the last 5 years · 45 threads

  2. 2
    Borrow checker forces contorted code, hurting readabilityUnreviewed

    31 people in the last 5 years · 30 threads

  3. 3
    Compiler takes too long on every runUnreviewed

    18 people in the last 5 years · 18 threads

  4. 4
    Async requirement spreads through the whole codebaseUnreviewed

    16 people in the last 5 years · 15 threads

  5. 5
    Syntax fixes lead to whole-program rejections; errors hard to readUnreviewed

    10 people in the last 5 years · 9 threads

  6. 6
    Error handling is tedious; boilerplate and macros keep tripping people upUnreviewed

    9 people in the last 5 years · 9 threads

  7. 7
    Trait syntax and unclear errors make traits hard to understandUnreviewed

    7 people in the last 5 years · 7 threads

  8. 8
    Writing custom async streams is extremely difficultUnreviewed

    7 people in the last 5 years · 7 threads

  9. 9
    Type error messages point at the wrong typeUnreviewed

    5 people in the last 5 years · 5 threads

  10. 10
    Lifetime annotations look confusing and seem pointlessUnreviewed

    5 people in the last 5 years · 5 threads

  11. 11
    Cryptic trait errors when sharing mutable state with asyncUnreviewed

    5 people in the last 5 years · 5 threads

  12. 12
    Lifetime specifiers required without understanding, guessed by trialUnreviewed

    4 people in the last 5 years · 4 threads

  13. 13
    Can't predict when values get copied under borrow rulesUnreviewed

    4 people in the last 5 years · 4 threads

  14. 14
    Module system is confusing and hard to learnUnreviewed

    4 people in the last 5 years · 4 threads

  15. 15
    str and String are confusing to tell apartUnreviewed

    4 people in the last 5 years · 3 threads

  16. 16
    Raw pointer code in unsafe blocks is hard to read and writeUnreviewed

    4 people in the last 5 years · 4 threads

  17. 17
    Macros are hard to debug and error messages don't helpUnreviewed

    3 people in the last 5 years · 3 threads

  18. 18
    Ownership constraints are hard to learn and behave unintuitivelyUnreviewed

    3 people in the last 5 years · 3 threads

  19. 19
    Borrow checker blocks sharing mutable references across threadsUnreviewed

    3 people in the last 5 years · 3 threads

  20. 20
    Controls don't match native look, theme or OS conventionsUnreviewed

    3 people in the last 5 years · 3 threads

  1. 1
    Heavy sigil syntax makes code hard to readUnreviewed

    80 people since the beginning · 77 threads

  2. 2
    Borrow checker forces contorted code, hurting readabilityUnreviewed

    49 people since the beginning · 48 threads

  3. 3
    Compiler takes too long on every runUnreviewed

    37 people since the beginning · 36 threads

  4. 4
    Syntax fixes lead to whole-program rejections; errors hard to readUnreviewed

    25 people since the beginning · 22 threads

  5. 5
    Async requirement spreads through the whole codebaseUnreviewed

    16 people since the beginning · 15 threads

  6. 6
    Error handling is tedious; boilerplate and macros keep tripping people upUnreviewed

    15 people since the beginning · 15 threads

  7. 7
    Macros are hard to debug and error messages don't helpUnreviewed

    15 people since the beginning · 14 threads

  8. 8
    Type error messages point at the wrong typeUnreviewed

    14 people since the beginning · 14 threads

  9. 9
    Trait syntax and unclear errors make traits hard to understandUnreviewed

    14 people since the beginning · 14 threads

  10. 10
    Rust doc pages are confusing and cluttered for first-time readersUnreviewed

    12 people since the beginning · 12 threads

  11. 11
    Lifetime specifiers required without understanding, guessed by trialUnreviewed

    8 people since the beginning · 8 threads

  12. 12
    Lifetime annotations look confusing and seem pointlessUnreviewed

    8 people since the beginning · 8 threads

  13. 13
    Writing custom async streams is extremely difficultUnreviewed

    8 people since the beginning · 8 threads

  14. 14
    Module system is confusing and hard to learnUnreviewed

    8 people since the beginning · 7 threads

  15. 15
    str and String are confusing to tell apartUnreviewed

    7 people since the beginning · 6 threads

  16. 16
    Ownership constraints are hard to learn and behave unintuitivelyUnreviewed

    6 people since the beginning · 6 threads

  17. 17
    Can't predict when values get copied under borrow rulesUnreviewed

    6 people since the beginning · 6 threads

  18. 18
    Cryptic trait errors when sharing mutable state with asyncUnreviewed

    6 people since the beginning · 6 threads

  19. 19
    Raw pointer code in unsafe blocks is hard to read and writeUnreviewed

    4 people since the beginning · 4 threads

  20. 20
    Pin's guarantees need unsafe code outside async fnUnreviewed

    4 people since the beginning · 4 threads

  21. 21
    Lifetimes reject code that should work, unlike HaskellUnreviewed

    3 people since the beginning · 3 threads

  22. 22
    Hidden trait impl functionality is hard to discoverUnreviewed

    3 people since the beginning · 3 threads

  23. 23
    Optimizing inefficient code requires advanced language featuresUnreviewed

    3 people since the beginning · 3 threads

  24. 24
    Handling Result errors neatly when calling sync code inside async is hardUnreviewed

    3 people since the beginning · 3 threads

  25. 25
    Constantly changing libraries make the right way hard to knowUnreviewed

    3 people since the beginning · 3 threads

  26. 26
    Borrow checker blocks sharing mutable references across threadsUnreviewed

    3 people since the beginning · 3 threads

  27. 27
    Poor contrast and small fonts make links and labels hard to readUnreviewed

    3 people since the beginning · 3 threads

  28. 28
    Obscure syntax and complex concepts block getting startedUnreviewed

    3 people since the beginning · 3 threads

  29. 29
    Generic arithmetic needs cumbersome trait bounds and casting workaroundsUnreviewed

    3 people since the beginning · 3 threads

  30. 30
    Controls don't match native look, theme or OS conventionsUnreviewed

    3 people since the beginning · 3 threads

  31. 31
    Easy to get dangling pointers and wrong trait impls without unsafe codeUnreviewed

    3 people since the beginning · 3 threads

  32. 32
    Inconsistent semicolons make code harder to read and unsure if it compilesUnreviewed

    3 people since the beginning · 3 threads

  33. 33
    Switching struct fields to borrowed forces lifetime annotations everywhereUnreviewed

    3 people since the beginning · 3 threads

Every issue, all time, most people first

  1. Heavy sigil syntax makes code hard to readUnreviewed

    80 people since 2014, in 13 different years · 7 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 2 people2015: 4 people2016: 6 people2017: 6 people2018: 6 people2019: 4 people2020: 4 people2021: 7 people2022: 11 people2023: 15 people2024: 6 people2025: 9 people2026: 6 people
    20112026
    Something wrong here?
  2. Borrow checker forces contorted code, hurting readabilityUnreviewed

    49 people since 2014, in 13 different years · 2 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 1 person2015: 2 people2016: 1 person2017: 3 people2018: 3 people2019: 1 person2020: 3 people2021: 4 people2022: 11 people2023: 6 people2024: 8 people2025: 5 people2026: 2 people
    20112026
    Something wrong here?
  3. Compiler takes too long on every runUnreviewed

    37 people since 2013, in 12 different years · 4 this year

    2011: 0 people2012: 0 people2013: 1 person2014: 0 people2015: 0 people2016: 1 person2017: 2 people2018: 1 person2019: 3 people2020: 9 people2021: 3 people2022: 3 people2023: 2 people2024: 5 people2025: 7 people2026: 2 people
    20112026
    Something wrong here?
  4. Syntax fixes lead to whole-program rejections; errors hard to readUnreviewed

    25 people since 2015, in 10 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 4 people2017: 6 people2018: 2 people2019: 0 people2020: 1 person2021: 2 people2022: 3 people2023: 5 people2024: 1 person2025: 0 people2026: 1 person
    20112026
    Something wrong here?
  5. Async requirement spreads through the whole codebaseUnreviewed

    16 people since 2022, in 5 different years · 2 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 1 person2023: 8 people2024: 4 people2025: 1 person2026: 2 people
    20112026
    Something wrong here?
  6. Error handling is tedious; boilerplate and macros keep tripping people upUnreviewed

    15 people since 2015, in 10 different years · 2 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 1 person2017: 2 people2018: 1 person2019: 0 people2020: 1 person2021: 0 people2022: 2 people2023: 1 person2024: 3 people2025: 2 people2026: 1 person
    20112026
    Something wrong here?
  7. Macros are hard to debug and error messages don't helpUnreviewed

    15 people since 2016, in 9 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 2 people2017: 2 people2018: 2 people2019: 1 person2020: 4 people2021: 1 person2022: 0 people2023: 0 people2024: 1 person2025: 1 person2026: 1 person
    20112026
    Something wrong here?
  8. Type error messages point at the wrong typeUnreviewed

    14 people since 2014, in 10 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 1 person2015: 1 person2016: 4 people2017: 0 people2018: 1 person2019: 1 person2020: 1 person2021: 0 people2022: 1 person2023: 1 person2024: 1 person2025: 2 people2026: 0 people
    20112026
    Something wrong here?
  9. Trait syntax and unclear errors make traits hard to understandUnreviewed

    14 people since 2015, in 9 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 0 people2017: 1 person2018: 3 people2019: 1 person2020: 1 person2021: 1 person2022: 3 people2023: 2 people2024: 1 person2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  10. Rust doc pages are confusing and cluttered for first-time readersUnreviewed

    12 people since 2012, in 9 different years · none this year

    2011: 0 people2012: 1 person2013: 1 person2014: 1 person2015: 0 people2016: 1 person2017: 3 people2018: 0 people2019: 0 people2020: 2 people2021: 1 person2022: 1 person2023: 0 people2024: 1 person2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  11. Lifetime specifiers required without understanding, guessed by trialUnreviewed

    8 people since 2015, in 7 different years · 2 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 1 person2017: 1 person2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 0 people2024: 0 people2025: 2 people2026: 1 person
    20112026
    Something wrong here?
  12. Lifetime annotations look confusing and seem pointlessUnreviewed

    8 people since 2015, in 6 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 2 people2016: 0 people2017: 0 people2018: 1 person2019: 0 people2020: 0 people2021: 0 people2022: 1 person2023: 2 people2024: 1 person2025: 1 person2026: 0 people
    20112026
    Something wrong here?
  13. Writing custom async streams is extremely difficultUnreviewed

    8 people since 2020, in 5 different years · 3 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 3 people2024: 1 person2025: 4 people2026: 0 people
    20112026
    Something wrong here?
  14. Module system is confusing and hard to learnUnreviewed

    8 people since 2016, in 5 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 2 people2017: 1 person2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 3 people2023: 0 people2024: 0 people2025: 0 people2026: 1 person
    20112026
    Something wrong here?
  15. str and String are confusing to tell apartUnreviewed

    7 people since 2017, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 2 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 4 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  16. Ownership constraints are hard to learn and behave unintuitivelyUnreviewed

    6 people since 2017, in 6 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 1 person2018: 1 person2019: 0 people2020: 0 people2021: 1 person2022: 1 person2023: 0 people2024: 1 person2025: 1 person2026: 0 people
    20112026
    Something wrong here?
  17. Can't predict when values get copied under borrow rulesUnreviewed

    6 people since 2014, in 6 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 1 person2015: 0 people2016: 0 people2017: 1 person2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 1 person2023: 1 person2024: 1 person2025: 0 people2026: 1 person
    20112026
    Something wrong here?
  18. Cryptic trait errors when sharing mutable state with asyncUnreviewed

    6 people since 2021, in 4 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 1 person2023: 3 people2024: 1 person2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  19. Raw pointer code in unsafe blocks is hard to read and writeUnreviewed

    4 people since 2022, in 3 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 2 people2023: 0 people2024: 1 person2025: 1 person2026: 0 people
    20112026
    Something wrong here?
  20. Pin's guarantees need unsafe code outside async fnUnreviewed

    4 people since 2019, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 2 people2020: 1 person2021: 0 people2022: 0 people2023: 0 people2024: 1 person2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  21. Lifetimes reject code that should work, unlike HaskellUnreviewed

    3 people since 2020, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 1 person2024: 0 people2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  22. Hidden trait impl functionality is hard to discoverUnreviewed

    3 people since 2015, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 1 person2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  23. Optimizing inefficient code requires advanced language featuresUnreviewed

    3 people since 2019, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 1 person2020: 1 person2021: 0 people2022: 0 people2023: 0 people2024: 1 person2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  24. Handling Result errors neatly when calling sync code inside async is hardUnreviewed

    3 people since 2020, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 1 person2024: 0 people2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  25. Constantly changing libraries make the right way hard to knowUnreviewed

    3 people since 2020, in 3 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 0 people2023: 1 person2024: 0 people2025: 0 people2026: 1 person
    20112026
    Something wrong here?
  26. Borrow checker blocks sharing mutable references across threadsUnreviewed

    3 people since 2022, in 3 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 1 person2023: 1 person2024: 0 people2025: 0 people2026: 1 person
    20112026
    Something wrong here?
  27. Obscure syntax and complex concepts block getting startedUnreviewed

    3 people since 2015, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 1 person2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  28. Generic arithmetic needs cumbersome trait bounds and casting workaroundsUnreviewed

    3 people since 2016, in 3 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 1 person2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 0 people2023: 0 people2024: 0 people2025: 1 person2026: 0 people
    20112026
    Something wrong here?
  29. Controls don't match native look, theme or OS conventionsUnreviewed

    3 people since 2023, in 2 different years · 1 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 2 people2024: 0 people2025: 0 people2026: 1 person
    20112026
    Something wrong here?
  30. Easy to get dangling pointers and wrong trait impls without unsafe codeUnreviewed

    3 people since 2021, in 2 different years · 2 this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 2 people
    20112026
    Something wrong here?
  31. Inconsistent semicolons make code harder to read and unsure if it compilesUnreviewed

    3 people since 2013, in 2 different years · none this year

    2011: 0 people2012: 0 people2013: 1 person2014: 0 people2015: 0 people2016: 2 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20112026
    Something wrong here?
  32. Switching struct fields to borrowed forces lifetime annotations everywhereUnreviewed

    3 people since 2018, in 2 different years · none this year

    2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 2 people2019: 0 people2020: 0 people2021: 0 people2022: 1 person2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20112026
    Something wrong here?

This list counts all time; the period switch above only changes the ranking. Each issue is a group of similar complaints raised by at least 3 people in 3 different months and threads. Each line under an issue is Claude Haiku's summary of one of its latest comments, not a quote; follow it to read the comment on Hacker News.

Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.

The newest 50 complaints