Our great sponsors
-
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.
We also use GcCell (Rc> but with cycle tracing, provided by a crate we forked) on everything that is independent of global state. Those things can take &mut self, and for that we have to be very careful about where we take our borrows. We actually create wrapper types around all our interior-mutable state so that the called function can decide when to borrow itself, which would be a lot less cumbersome if we had arbitrary self types stabilized. As it stands we have to do stuff like:
This was inspired by the approach in rust-z80emu (my CPU is written as a seperate module, hence the MemoryBus trait to provide a clean seperation).