UniFFI
UniFFI is a tool that automatically generates foreign-language bindings targeting Rust libraries. The repository can be found on github. It fits in the practice of consolidating business logic in a single Rust library while targeting multiple platforms, making it simpler to develop and maintain a cross-platform codebase. Note that this tool will not help you ship a Rust library to these platforms, but it will help you avoid writing bindings code by hand. Related.
Design
UniFFI requires you to describe your interface via either proc-macros or in an Interface Definition Language (based on WebIDL) file. These definitions describe the methods and data structures available to the targeted languages, and are used to generate Rust scaffolding code and foreign-language bindings. This process can take place either during the build process or be manually initiated by the developer.
Supported languages
UniFFI comes with full support for Kotlin, Swift and Python; unless specified otherwise, you can expect all features in this manual will work for these languages.
We also have partial legacy support for Ruby; the UniFFI team keeps the existing Ruby support working but tends to not add new features to that language. It seems possible that Ruby support will be split into its own crate at some point, but in the meantime we welcome improvements and contributions to Ruby.
There are also many 3rd party bindings - please see our README for references. These languages may require older versions of UniFFI and may have partial or non-existant support for some features; see the documentation for those bindings for details.