rust-orphan-rules VS embassy

Compare rust-orphan-rules vs embassy and see what are their differences.

rust-orphan-rules

An unofficial, experimental place for documenting and gathering feedback on the design problems around Rust's orphan rules (by Ixrec)

embassy

Modern embedded framework, using Rust and async. (by embassy-rs)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
rust-orphan-rules embassy
11 70
180 4,377
- 9.5%
0.0 9.9
about 5 years ago about 16 hours ago
Rust
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

rust-orphan-rules

Posts with mentions or reviews of rust-orphan-rules. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-26.
  • Coherence and Orphan Rules in Rust: An unofficial, experimental place for docum
    1 project | news.ycombinator.com | 1 May 2023
  • Conflicting trait implementation, but there shouldn't be
    2 projects | /r/learnrust | 26 Apr 2023
  • Fellow Rust enthusiasts: What "sucks" about Rust?
    25 projects | /r/rust | 10 Mar 2023
    Well, unless someone comes up with better, compatible rules, the orpan rules are gonna stick around.
  • The langage for the next 40 years of engine dev
    5 projects | /r/gameenginedevs | 14 Feb 2023
    Additionally there are other issues with rust currently. Compile time code (ala constexpr) is not up to par with C++20 (not really close). The const generic aren't as powerful as C++20 which added non primitive non type template parameters (though with you stuck with C++14, it actually is significantly better than what you have, again, if you're going to use C++, just use 20). Generics accepting closures is a bit more of an ordeal in rust, compared to C++. Also C++'s Duck Typed templates allow for some uncharacteristically strong typing compared to what is expressible in Rust generics currently. Now, duck typed templates do have major downsides, for example the entire feature of concepts is completely irrelevant in rust, but required for sane DTT type bounds, but they also have major upsides. Rust currently doesn't have "negative trait bounds", basically "This objected does not implement this trait, or std::enable_if> or the equivalent concepts implementation. Rust also doesn't have trait specializations, basically template specialization. Do note all features I've talked about to this point have nightly options, they just are at various stages of being stable/complete. Another issue is the orphan rule, though this is kind of a problem in C++ too in some respects, and that's unlikely to change drastically, since there are legitimate reasons for it's existence. For a lot of code none of these things are big deals, others they are, which is why you find inconsistent feed back on these issues.
  • What are Rust’s biggest weaknesses?
    7 projects | /r/rust | 17 Nov 2022
    Not that simple... hence why Orphan rule is still in-place. The struct wrapper was implemented in Rust as a temporary safe work-around. However, they are making progress on a solution: https://github.com/Ixrec/rust-orphan-rules/issues/1
  • Hey Rustaceans! Got a question? Ask here! (46/2022)!
    4 projects | /r/rust | 14 Nov 2022
    That's still not an entirely complete explanation because there's more nuanced situations which aren't completely foreign but are foreign enough that if allowed, two crates could write the same impls. Some of the definitions are still unofficial as far as am I'm aware. For the best reference I’ve seen so far see this for more details.
  • Design Patterns with Rust Types
    1 project | dev.to | 28 Jul 2022
    In our crate the compiler doesn't know when calling MyTrait methods on MyStruct whether to use the implementation defined in crate 3 or crate 4! Rust has a set of orphan rules to prevent this situation from happening.
  • De/serialize an external crate's struct
    2 projects | /r/rust | 1 May 2022
    Sadly because of the rusts orphan rule you cannot implement a Trait on a Type where you do not own one or the other. So, apart from upstream contributions your only options are either a new Trait or a new Type.
  • Is the orphan rule the only solution?
    1 project | /r/rust | 30 Oct 2021
    If anyone is looking for additional background about orphan rules, check out https://github.com/Ixrec/rust-orphan-rules
  • Methods for Array Initialization in Rust
    2 projects | news.ycombinator.com | 24 May 2021

embassy

Posts with mentions or reviews of embassy. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-05.
  • Embassy 在 Blue Pill 上的点灯案例
    2 projects | dev.to | 5 Apr 2024
  • Why choose async/await over threads?
    11 projects | news.ycombinator.com | 25 Mar 2024
    thanks. looked that up. for the curious: https://embassy.dev/
  • Accessing the Pinecil UART with Picoprobe
    2 projects | news.ycombinator.com | 30 Jan 2024
    Running the Embassy RP2040 USB CDC ACM serial example takes about 5 seconds on a Pico.

    https://github.com/embassy-rs/embassy/blob/main/examples/rp/...

  • Avoid Async Rust at All Cost
    1 project | news.ycombinator.com | 23 Jan 2024
    Async solves different problems, you can, for instance, have just a single-threaded CPU and still have a nice API if you have async-await. It might not be so cool at a higher level as Go's approach of channels and threads, but it's cool in embedded, read this:

    https://github.com/embassy-rs/embassy?tab=readme-ov-file#rus...

    "Rust's async/await allows for unprecedently easy and efficient multitasking in embedded systems. Tasks get transformed at compile time into state machines that get run cooperatively. It requires no dynamic memory allocation, and runs on a single stack, so no per-task stack size tuning is required. It obsoletes the need for a traditional RTOS with kernel context switching, and is faster and smaller than one!"

    I'm just toying with Raspberry Pi Pico and it's pretty nice.

    Go and Rust have different use cases, the async-await is nice at a low level.

  • Is anyone using coroutines seriously?
    4 projects | /r/cpp | 5 Dec 2023
    I have not yet dipped by toes in the Rust waters, but reading about the embassy project is actually what piqued my curiosity about using C++ coroutines in embedded. Are you familiar with the project or have you found it lacking?
  • The state of BLE and Rust (no_std)
    2 projects | /r/rust | 10 Nov 2023
    I think I get the basics (shoutout to the Rust Embedded Working Group!), and I've started looking for the stack I'd be using. I think Embassy is really amazing, as well as the work of the ESP team -- hats off.
  • Rust newcomers are 70x less likely to create vulnerabilities than C++ newcomers [pdf]
    5 projects | news.ycombinator.com | 6 Nov 2023
    > }

    And this is how to do it using embassy, which is an async framework for embedded in rust:

    https://github.com/embassy-rs/embassy/blob/main/examples/rp/...

  • The State of Async Rust
    9 projects | news.ycombinator.com | 25 Sep 2023
    > not good for embedded

    embassy begs to differ

    https://embassy.dev/

    async/await is really just a syntax for building state machines in a way that resembles regular code. It's compiled down to the same code that you would write by hand anyway (early on it had some bloat in state size but I think it's all fixed now).

    And embedded has a lot of state machines!

  • Asynchronous Rust on Cortex-M Microcontrollers
    5 projects | news.ycombinator.com | 19 Jul 2023
    You can run multiple executors at different interrupt priority levels (with multiple tasks per executor), which allows tasks on the higher priority executor to interrupt other tasks. Here's an example https://github.com/embassy-rs/embassy/blob/main/examples/nrf...
  • Espressif advances with Rust – 30-06-2023
    6 projects | news.ycombinator.com | 1 Jul 2023

What are some alternatives?

When comparing rust-orphan-rules and embassy you can also consider the following projects:

cargo-release - Cargo subcommand `release`: everything about releasing a rust crate.

rtic - Real-Time Interrupt-driven Concurrency (RTIC) framework for ARM Cortex-M microcontrollers

pollster - A minimal async executor that lets you block on a future

rusty-clock - An alarm clock with environment stats in pure bare metal embedded rust

keepass-rs - Rust KeePass database file parser for KDB, KDBX3 and KDBX4, with experimental support for KDBX4 writing.

smoltcp - a smol tcp/ip stack

dislike-in-rust - A list of the few things I don't like about rust

rust-mos - Empowering everyone to build reliable and efficient software.

getrandom - A small cross-platform library for retrieving random data from (operating) system source

nrf-hal - A Rust HAL for the nRF family of devices

rust-delegate - Rust method delegation with less boilerplate

async-std - Async version of the Rust standard library