All technologies

Rust

33 painsavg 5.7/10
ecosystem 8build 6dx 5compatibility 3architecture 3security 1onboarding 1dependency 1storage 1docs 1performance 1config 1monitoring 1

Supply chain security vulnerabilities in crates.io ecosystem

8

Malicious crates have been discovered on crates.io, with concerns about disposable accounts and attack vectors. Developers worry that blind dependency upgrades and sprawling dependency trees (especially with tokio) pose significant security risks that could be exploited by state actors.

securityRustcrates.ioCargo+1

Slow incremental compile times after small code changes

8

Developers report that incremental rebuilds after making minor source code changes take significantly longer than expected. Workspace rebuilds trigger full dependent crate recompilation (not incremental across boundaries), and the linking phase always runs from scratch without caching, creating major productivity bottlenecks.

buildRustCargo

Job market oversaturation and salary stagnation for Python developers

7

Python's accessibility flooded the market with junior developers, creating intense competition for entry-level roles. Companies migrate to Go or Kotlin for performance/type safety, and AI startups prefer Julia/Rust, leaving Python devs maintaining legacy models.

ecosystemPythonGoKotlin+3

Competition from faster emerging languages (Mojo, Julia, Zig, Rust)

7

Mojo offers Python interoperability with C-level speed; Julia dominates scientific computing; Rust leads systems programming; Zig and WebAssembly-centric languages dominate edge/IoT. Python loses use-case ownership across domains.

ecosystemPythonMojoJulia+3

Long onboarding time for enterprises hiring Rust developers

7

When enterprises hire large teams of backend engineers, the cost and time to onboard them into Rust is substantial, with most teams expecting months before new hires can contribute meaningfully. This creates significant friction for rapid team scaling.

onboardingRust

Slow linking phase in compilation

7

The linking phase is performed from scratch every time and is a major bottleneck in the build process. Since Rust delegates linking to external system linkers, performance improvements are limited, though the Rust team is attempting to switch to faster linkers by default.

buildRust

Inefficient incremental compilation caching

7

The Rust compiler's incremental engine has gaps where certain compilation parts are not incremental or not cached optimally. For example, expansion of derive proc macros is not currently cached, causing unnecessary recompilation.

buildRustprocedural macros

Lack of mature cross-platform GUI framework

7

Rust lacks production-ready, cross-platform GUI frameworks equivalent to Qt or Electron. Existing efforts (egui, iced, druid) are immature, forcing GUI developers to choose between long iteration cycles or alternative languages.

ecosystemRusteguiiced+1

Embedded systems face dependency bloat and debug complexity

7

Embedded developers cannot control what gets pulled in with dependencies, leading to bloat. Debug builds become too large for small controllers, forcing developers into optimized builds that complicate debugging and violate typical embedded workflows.

dependencyRust

Async Rust complexity creates a separate, difficult programming model

7

Async functionality feels like a completely different programming model from synchronous Rust, causing many developers to avoid it entirely. The complexity is cited even by non-beginners as a major pain point affecting framework choices and code architecture.

dxRust

Lack of stable ABI complicates binary distribution and dependency management

7

Rust lacks a full-featured, stable ABI, making it difficult to distribute dependencies as pre-compiled binaries. This forces recompilation of all transitive dependencies, significantly increasing compile times and preventing the binary-based dependency model used by many ecosystems.

buildRust

Slow Rust compile times

7

Rust compilation is notably slower compared to other programming languages, creating friction in the development workflow and reducing developer productivity.

buildRustrustc

Silent attrition from accumulated friction despite successful language learning

6

Developers successfully learn Rust but quietly abandon it due to accumulated friction and productivity concerns that compound over time, a pattern not captured by traditional learning curve narratives.

dxRust

Fragmented async ecosystem with multiple competing runtimes

6

Developers struggle with async ecosystem fragmentation, needing to juggle multiple runtimes (tokio, async-std, etc.) with runtime-specific quirks and incompatibilities. There is no unified async runtime, creating compatibility headaches across projects.

ecosystemRusttokioasync-std

Subpar debugging experience

6

Rust's debugging story represents a significant non-trivial problem for developers, with 19.90% reporting it as a big problem. This issue slipped from 2nd to 4th place in priority ranking from 2024 to 2025.

dxRust

High disk space usage

6

High disk space consumption is a significant non-trivial problem affecting Rust developers' productivity. 22.24% of developers report it as a big problem limiting their work.

storageRust

Steep learning curve and confusing syntax for newcomers

6

Rust's steep learning curve frustrates newcomers, with common complaints about complex syntax, difficulty with intuitive construct selection, self-referential structures, and the borrow checker. Among non-Rust users surveyed, 22% cited Rust as 'too difficult to learn'.

docsRust

Insufficient first-class support for mobile app development

6

Rust doesn't offer out-of-the-box, first-class support for iOS and Android app development, limiting adoption for mobile-focused teams and forcing reliance on workarounds or alternative languages.

ecosystemRustiOSAndroid

Multithreaded communication primitives are safe but inefficient

6

Sync/Send semantics, Mutex, and Arc provide memory safety for concurrent code but have poor CPU cache behavior and performance characteristics, undermining Rust's performance-first positioning for intensive multithreaded applications.

performanceRust

Crate splitting required for reasonable compile times fragmentizes code organization

6

Developers must split projects into many small crates to achieve reasonable compile times, since crates are compiled as single units and circular dependencies are allowed. This artificial fragmentation complicates project structure despite most code lacking true circular dependencies.

buildRust

Lack of generic const expressions feature

5

Generic const expressions is the leading unimplemented/nightly-only feature blocking Rust development. 18.35% of developers say it would unblock their use case and 41.53% say it would improve their code.

compatibilityRust

TOML configuration complexity breeds subtle bugs in namespace and feature management

5

Rust's TOML configuration format, combined with complex namespace and feature flag systems, makes it easy to introduce subtle bugs and create fragile configurations, particularly problematic for projects with many optional dependencies.

configRustTOML

Limited object-oriented programming support

5

Rust's support for object-oriented programming patterns is not as robust as languages like Python or Java, making it more challenging to write large, complex OOP applications. Developers struggle with OOP paradigms and feel constrained by the borrow checker.

architectureRust

Difficulty identifying build performance bottlenecks

5

When developers experience slow Rust builds, it is challenging to identify where the compilation process is spending time and what the bottleneck is. Very few Rust developers leverage build profiling tools to diagnose issues.

monitoringRust

Limited standard library support compared to established languages

5

While Rust's standard library is comprehensive, it lacks the breadth of library support found in more established languages like Python or JavaScript. This makes it difficult to find pre-built libraries or tools for tasks commonly handled in other languages.

ecosystemRust

Tooling gaps with doctests and IDE integration

4

Documentation testing with doctests is cumbersome due to gaps in IDE support and poor integration with cargo check and clippy. This creates friction in the development workflow for maintaining code examples in documentation.

dxRustCargoclippy

Semantic versioning requirement mismatches regulatory compliance workflows

4

The requirement to use semantic versioning doesn't align well with software under regulatory compliance, where version numbers often reflect multiple regulatory and product considerations rather than pure API compatibility.

compatibilityRust

Static typing reduces flexibility for dynamic programming tasks

4

Rust's strict static typing makes it less flexible than dynamically typed languages like Python or JavaScript, creating challenges for certain types of programming tasks and edge cases that are easier in dynamic languages.

compatibilityRust

Language complexity growth concerns

4

41.6% of Rust developers worry that Rust may become too complex, indicating concern about the language's trajectory and maintainability as it evolves.

architectureRust

Insufficient support for Rust developers and maintainers

4

38.4% of Rust developers worry that Rust developers and maintainers are not properly supported, indicating concern about the sustainability and resource allocation of the language ecosystem.

ecosystemRust

Unsafe code required for aliased mutable borrows within structs

4

Getting mutable borrows to different fields of the same struct simultaneously requires unsafe code despite the compiler being able to verify memory safety, creating friction for common programming patterns.

dxRust

Limited industry adoption of Rust

3

42.1% of Rust developers are concerned that Rust does not get enough usage in the tech industry, despite the language's benefits. This remains the top worry among developers.

ecosystemRust

Limited functional programming language features

3

Rust's support for functional programming is not as comprehensive as languages like Haskell or Lisp, making it more difficult to write pure functional programs or use functional programming patterns extensively.

architectureRust