What are the scenarios where "Rewrite it in Rust" didn't meet your expectations or couldn't be successfully implemented?

This page summarizes the projects mentioned and recommended in the original post on /r/rust

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • embassy

    Modern embedded framework, using Rust and async.

  • The embassy ecosystem is good. Then you bring async into the equation, which fits embedded really well. I've been working full time with embassy for the last 10 months or so and love it.

  • rust-openssl

    OpenSSL bindings for Rust

  • I also studied this question on FFI several weeks ago in terms of "rewrite part of the system in Rust". Unexpected results could be semantic issues (e.g., different error handling methods) or security issues (FFI could be a soundness hole). I suggest going through the issues of libraries that have started rewriting work such as rust-openssl or rustls (This is the one trying to rewrite in whole rust rather than using FFI; however, you will not be able to find the mapping function in the C version and compare them). I hope this helps!

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • rustls

    A modern TLS library in Rust

  • I also studied this question on FFI several weeks ago in terms of "rewrite part of the system in Rust". Unexpected results could be semantic issues (e.g., different error handling methods) or security issues (FFI could be a soundness hole). I suggest going through the issues of libraries that have started rewriting work such as rust-openssl or rustls (This is the one trying to rewrite in whole rust rather than using FFI; however, you will not be able to find the mapping function in the C version and compare them). I hope this helps!

  • midi-to-keypress

    Takes MIDI input and turns it into keypresses

  • I did this a few years ago with https://github.com/xobs/midi-to-keypress and the biggest issue I faced was the lack of a gui.

  • CircleMUD

    Unofficial mirror of the CircleMUD engine.

  • Unfortunately the server has a blocking select until there's a new socket for when there's no open sockets to manage. I either have to change the old logic or write some awkward condvar stuff (like here https://github.com/Yuffster/CircleMUD/commit/94c27cc11fda671ede5316e6aadc170889060f5e). It's really sad, the naive version that busy loops when the server has no connections is very chic and then it gets a lot harder to follow.

  • kanata

    Improve keyboard comfort and usability with advanced customization

  • Clipper2

    Polygon Clipping and Offsetting - C++, C# and Delphi

  • I tried to rewrite Clipper2 in Rust. There's a C#, a Delphi and a C++ implementation, so how hard can it be?

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • winsafe

    Windows API and GUI in safe, idiomatic Rust.

  • If you had such problems (which I also had in the past), I'm really interested in you opinion about WinSafe, and if it could help you solving them.

  • Relm4

    Build truly native applications with ease!

  • Did you try Relm? It's an implementation is the elm architecture (think react) on top of Gtk. Given your experience with Gtk it might suit you really well, as you can even take only parts of it and continue using bare Gtk for the rest. Give it a try!

  • inline-python

    Inline Python code directly in your Rust code

  • This may be cursed but you could just use https://github.com/fusion-engineering/inline-python to use the Python Levensthein library in Rust directly. Just make sure to invoke the Rust binary under a venv with the library

  • VulkanDemo

    A cross-platform spike using Vulkan to render a complex, lit and shadowed environment.

  • Sure. Unsure how readily a rusty person could port, say, my Vulkan repo https://github.com/cschladetsch/VulkanDemo

  • xml-mut

    xml mutation language resembling sql

  • This is exactly what I needed when implementing xml-mut :D I have used roxmltree instead and manipulated text directly. will try to rewrite it using Xot.

  • roxmltree

    Represent an XML document as a read-only tree.

  • This is exactly what I needed when implementing xml-mut :D I have used roxmltree instead and manipulated text directly. will try to rewrite it using Xot.

  • quick-xml

    Rust high performance xml reader and writer

  • Exactly the same experience. In particular I ran into the issue that the only "ergonomic" API (that doesn't require hand-writing a parser) uses serde derive macros, but quick_xml doesn't handle namespaces. After about a day of this I stopped bike-shedding and just used lxml in Python. It works fine (and I have a large XML file, ~2.4Gb).

  • avr-hal

    embedded-hal abstractions for AVR microcontrollers

  • I found the generics a lot less of a problem when I realized I could parametrize on things like embedded_hal::serial::Write instead of UsartOps https://github.com/Rahix/avr-hal/pull/264/commits/17ed15321cb8fcf8aedb1f8133be1f189eb06a6f

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts