Switching from C++ to Rust

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • go-sumtype

    A simple utility for running exhaustiveness checks on Go "sum types."

  • The call out to sum types is something I feel. I've been using Rust daily for almost 10 years now, and sum types are absolutely still one of the things I love most about it. It's easily one of the things I miss the most in other languages. I'm usually a proponent of "using languages as they're intended," but I missed exhaustiveness checking so much that I ported a version of it to Go[1] as a sort of lint.

    [1]: https://github.com/BurntSushi/go-sumtype

  • 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
  • quickcheck

    Automated property based testing for Rust (with shrinking).

  • Yeah as other have mentioned, I was using Rust before 1.0.

    This is my first public commit: https://github.com/BurntSushi/quickcheck/commit/c9eb2884d6a6...

    I didn't write any substantive Rust before that point. So I'm at over 9 years.

  • rust

    Empowering everyone to build reliable and efficient software.

  • A very specific case on admittedly a toy project.

    I was working on a card game simulator and I had a Vec of players. I needed to pull two players from that Vec and the first player would give a card to the second player. In my head I would grab both players via get_mut and then perform my operation. However, get_mut borrows the vec mutable and the compiler complained that I borrowed the Vec mutably two times.

    It took me a bit to understand why the compiler complained, but then it clicked: It couldn't prove that get_mut wasn't returning the same item both times.

    There were a few solutions. One was to borrow the first player, take a card, drop the &mut and then take the second player. At some point in the future I could use https://github.com/rust-lang/rust/issues/104642 to get_many_mut. I ended up with a pretty inefficient version of get_many_mut that fully traversed my iterator to get the two mut references (which works because traversing the iterator guarantees you won't see the same element twice) and it was fine for a collection of a half dozen players.

    Anyway, there's a little example.

    Anyway, it was a small thing but

  • mo

    🦄 Monads and popular FP abstractions, powered by Go 1.18+ Generics (Option, Result, Either...)

  • Go generics allow all kinds of things https://github.com/samber/mo

  • esp-wifi-sys

    Wi-Fi and BT drivers packaged for integration into bare-metal esp-wifi.

  • Esp-wifi is very actively being updated, looks like C3 is supposed to work[0][1], so if you tried more than a few weeks ago it probably changed.

    [0]: https://github.com/esp-rs/esp-wifi#current-support

  • espup

    Tool for installing and maintaining Espressif Rust ecosystem.

  • Thanks for mentioning it. I already tried using it a few months ago and brushed it off as still being a WIP, but it still didn't work when I tried again just a few days ago. Asking in the Matrix chat when first trying it sadly only got me a "works for me" from the developers.

    What Espressif is doing with their esp-idf and porting it to Rust is promising, but overall it still needs work. Using the toolchain to develop on the ESP32 was at least slightly painful half a year ago before they introduced espup[1], having to keep a patched LLVM around etc., and supposedly support for their Xtensa architecture is coming to LLVM soon[2] so this will improve in the future.

    I'd also love to see Bluetooth support in esp-idf-svc[3], but they seem to be lacking people with the required knowledge to design and implement an abstraction for it[4].

    [1]: https://github.com/esp-rs/espup

  • esp-idf-svc

    Type-Safe Rust Wrappers for various ESP-IDF services (WiFi, Network, Httpd, Logging, etc.)

  • [4]: https://github.com/esp-rs/esp-idf-svc/issues/55#issuecomment...

  • 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

  • Rust on Espressif chips – 29-09-2023

    2 projects | news.ycombinator.com | 30 Sep 2023
  • The Embedded Rust ESP Development Ecosystem

    7 projects | dev.to | 15 Sep 2023
  • Espressif advances with Rust – 30-06-2023

    6 projects | news.ycombinator.com | 1 Jul 2023
  • What the HAL? The Quest for Finding a Suitable Embedded Rust HAL

    5 projects | dev.to | 30 Jan 2023
  • Rust for Embedded Development (e.g. microcontrollers)

    5 projects | /r/rust | 6 Dec 2022