From 9e3c08db40b8916968b9f30096c7be3f00ce9647 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 21 Apr 2024 13:44:51 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- third_party/rust/ffi-support/README.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 third_party/rust/ffi-support/README.md (limited to 'third_party/rust/ffi-support/README.md') diff --git a/third_party/rust/ffi-support/README.md b/third_party/rust/ffi-support/README.md new file mode 100644 index 0000000000..1295023f1e --- /dev/null +++ b/third_party/rust/ffi-support/README.md @@ -0,0 +1,32 @@ +# FFI Support + +[![Docs](https://docs.rs/ffi-support/badge.svg)](https://docs.rs/ffi-support) + +This crate implements a support library to simplify implementing the patterns that the [mozilla/application-services](https://github.com/mozilla/application-services) repository uses for it's "Rust Component" FFI libraries, which are used to share Rust code + +In particular, it can assist with the following areas: + +1. Avoiding throwing panics over the FFI (which is undefined behavior) +2. Translating rust errors (and panics) into errors that the caller on the other side of the FFI is able to handle. +3. Converting strings to/from rust str. +4. Passing non-string data (in a few ways, including exposing an opaque pointeer, marshalling data to JSON strings with serde, as well as arbitrary custom handling) back and forth between Rust and whatever the caller on the other side of the FFI is. + +Additionally, it's documentation describes a number of the problems we've hit doing this to expose libraries to consumers on mobile platforms. + +## Usage + +Add the following to your Cargo.toml + +```toml +ffi-support = "0.4.4" +``` + +For further examples, the examples in the docs is the best starting point, followed by the usage code in the [mozilla/application-services](https://github.com/mozilla/application-services) repo (for example [here](https://github.com/mozilla/application-services/blob/main/components/places/ffi/src/lib.rs) or [here](https://github.com/mozilla/application-services/blob/main/components/places/src/ffi.rs)). + +## License + +Dual licensed under the Apache License, Version 2.0 or + or the MIT license or +, at your option. All files in the project +carrying such notice may not be copied, modified, or distributed except +according to those terms. -- cgit v1.2.3