Module uniffi_bindgen::bindings::swift
source · Expand description
Swift bindings backend for UniFFI
This module generates Swift bindings from a ComponentInterface definition,
using Swift’s builtin support for loading C header files.
Conceptually, the generated bindings are split into two Swift modules, one for the low-level C FFI layer and one for the higher-level Swift bindings. For a UniFFI component named “example” we generate:
-
A C header file
exampleFFI.hdeclaring the low-level structs and functions for calling into Rust, along with a correspondingexampleFFI.modulemapto expose them to Swift. -
A Swift source file
example.swiftthat imports theexampleFFImodule and wraps it to provide the higher-level Swift API.
Most of the concepts in a ComponentInterface have an obvious counterpart in Swift,
with the details documented in inline comments where appropriate.
To handle lifting/lowering/serializing types across the FFI boundary, the Swift code
defines a protocol ViaFfi that is analogous to the uniffi::ViaFfi Rust trait.
Each type that can traverse the FFI conforms to the ViaFfi protocol, which specifies:
- The corresponding low-level type.
- How to lift from and lower into into that type.
- How to read from and write into a byte buffer.
Re-exports
pub use gen_swift::generate_bindings;pub use gen_swift::Config;
Modules
- test 🔒
Structs
- The Swift bindings generated from a
ComponentInterface.
Functions
- Run a Swift script
- Run Swift tests for a UniFFI test fixture
- Write UniFFI component bindings for Swift as files on disk.