gecko-dev/third_party/rust/ffi-support
Jan-Erik Rediger 311c2d9ea7 Bug 1623300 - Replace fogotype with the actual FOG crate now. r=chutten
This also upgrades the vendored Glean version, which thanks to our
upstream work doesn't change anything else (except one small
Mozilla-developed dependency)

It's still feature-gated to nightly.
In C++ there's now a `MOZ_GLEAN` define.
For Rust it's behind the `glean` feature (enabled on nightly only).
The `fog` crate is empty, so no Glean is actually instantiated.

Differential Revision: https://phabricator.services.mozilla.com/D68539

--HG--
rename : third_party/rust/glean-preview/src/metrics/mod.rs => toolkit/components/glean/src/lib.rs
extra : moz-landing-system : lando
2020-03-31 08:24:40 +00:00
..
src Bug 1623300 - Replace fogotype with the actual FOG crate now. r=chutten 2020-03-31 08:24:40 +00:00
.cargo-checksum.json Bug 1623300 - Replace fogotype with the actual FOG crate now. r=chutten 2020-03-31 08:24:40 +00:00
Cargo.toml Bug 1623300 - Replace fogotype with the actual FOG crate now. r=chutten 2020-03-31 08:24:40 +00:00
LICENSE-APACHE Bug 1596132 - mach vendor rust for glean-preview r=janerik,froydnj 2019-12-09 15:01:10 +00:00
LICENSE-MIT Bug 1596132 - mach vendor rust for glean-preview r=janerik,froydnj 2019-12-09 15:01:10 +00:00
README.md Bug 1596132 - mach vendor rust for glean-preview r=janerik,froydnj 2019-12-09 15:01:10 +00:00

README.md

FFI Support

Docs

This crate implements a support library to simplify implementing the patterns that the 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

ffi-support = "0.1.1"

For further examples, the examples in the docs is the best starting point, followed by the usage code in the mozilla/application-services repo (for example here or here).

License

Dual licensed under the Apache License, Version 2.0 or http://www.apache.org/licenses/LICENSE-2.0 or the MIT license or http://opensource.org/licenses/MIT, at your option. All files in the project carrying such notice may not be copied, modified, or distributed except according to those terms.