Ladybird On Swift vs Rust
Based on The PrimeTime's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Rust was praised for systems-style input-to-output programming but criticized when modeling browser-like, object-oriented document structures.
Briefing
Ladybird’s Swift choice over Rust comes down to fit: Rust shines for input-to-output systems work, but it becomes tedious when developers try to model object-oriented, inheritance-heavy structures common in browser-style document models. In a recent evaluation, multiple people started Rust projects with excitement—fuelled by hype and momentum around the language—but returned frustrated once the work moved beyond “trivial” transformations into more complex modeling tasks.
The contrast shows up most sharply in how Rust handles browser-adjacent abstractions. The web stack’s core APIs were designed in the 1990s and reflect an object-oriented style inspired by Java and XML. That style relies on inheritance as a fundamental building block. Rust’s lack of inheritance makes it harder to express those patterns cleanly, turning otherwise straightforward modeling into repetitive, time-consuming work. The result: nobody had a good time when attempting to build in a browser-like paradigm, even though Rust felt “delightful” for classic C-style programs that take input and produce output.
The discussion also highlights a broader theme: language enjoyment often tracks with the kind of work a developer finds fun. Rust’s strengths—precise types, zero-cost abstractions, and low-level control—can be a joy for people who like thinking in terms of dispatch, interfaces, and exact behavior. But for developers who prefer procedural workflows, Rust’s required skill set can feel like mandatory overhead. Even when Rust’s safety and expressiveness are respected, the day-to-day friction can outweigh the benefits.
Zig enters as a counterpoint. Zig is described as pleasant and even “shockingly lovely” for building without heavy abstraction, but it demands constant attention to manual memory management. It also lacks an “amazing expressive type system,” making interface construction unusually hard—down to building vtables by hand. That tradeoff produces a different kind of tedium: less about Rust’s modeling friction, more about the ongoing mental tax of memory and interface plumbing.
Swift, by contrast, lands as a safe, modern language with strong object-oriented capabilities—positioned as even better than C++ in some respects. It uses value semantics and relies on ARC for memory management, which helps explain why it can feel both safer and more natural for real-world application structures. The team also points to Swift’s expanding platform support: Swift 6 is expected to improve cross-platform readiness beyond Apple ecosystems, including Linux and Windows.
Overall, the evaluation doesn’t frame Rust as “wrong,” but as task-dependent. Memory-safe languages are broadly favored, and the industry direction is toward safety. Still, the practical verdict is that Swift worked better with the “real world” patterns they needed—especially where object-oriented modeling and inheritance-like structures matter—while Rust’s best fit remained narrower.
Cornell Notes
The core takeaway is that Rust’s strengths don’t automatically translate to every application domain. In an evaluation, Rust felt excellent for systems-style programs that transform input to output, but it became tedious when developers tried to model browser-like, object-oriented document structures that rely on inheritance. Zig was also praised for pleasant, low-abstraction building, yet criticized for manual memory management and difficult interface construction (including hand-built vtables). Swift emerged as the practical alternative because it offers value semantics, strong object-oriented capabilities, and memory safety via ARC, with improving support across platforms as Swift 6 approaches. The result is a “best tool for the job” conclusion: language enjoyment and productivity depend heavily on the paradigm being modeled.
Why did Rust feel productive for some tasks but frustrating for others?
What role did inheritance (or its absence) play in the Rust-vs-Swift comparison?
How did the discussion connect language choice to what developers find fun?
What were the main criticisms of Zig in this conversation?
What specific reasons made Swift look like the better fit in this evaluation?
Review Questions
- What kinds of application modeling tasks tended to expose Rust’s weaknesses in this discussion, and why?
- Compare the “tedium sources” for Rust and Zig as described here—what kinds of work created the friction in each case?
- Why did Swift’s combination of value semantics, object-oriented features, and ARC matter for the specific problems being targeted?
Key Points
- 1
Rust was praised for systems-style input-to-output programming but criticized when modeling browser-like, object-oriented document structures.
- 2
The lack of inheritance in Rust was a major reason object-oriented modeling became tedious in the browser paradigm.
- 3
Zig was described as pleasant for direct building, but manual memory management and hand-built vtables made interface work hard.
- 4
Language preference was framed as strongly tied to what developers find enjoyable: procedural vs type/dispatch-heavy workflows.
- 5
Swift was selected as a safer, modern option with strong object-oriented capabilities and value semantics, using ARC for memory management.
- 6
Swift’s cross-platform trajectory (including Swift 6) was treated as a practical factor in choosing it over Rust for real-world deployment needs.