Home

Awesome

Fruity

<img alt="github" src="https://img.shields.io/badge/github-nvzqz/fruity-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="24"> <img alt="crates.io" src="https://img.shields.io/crates/v/fruity.svg?style=for-the-badge&color=fc8d62&logo=rust" height="24"> <img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-fruity-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K" height="24">

Rusty bindings for Apple libraries, brought to you by @NikolaiVazquez.

Index

  1. Donate
  2. Usage
    1. Feature Flags
  3. Goals
    1. Idiomatic Rust
    2. Zero Cost
  4. License

Donate

If this project is useful to you, consider sponsoring me or donating directly!

Doing so enables me to create high-quality open source software like this. ❤️

Usage

This library is available on crates.io and can be used in your project by adding the following to your project's Cargo.toml:

[dependencies.fruity]
version = "0.3.0"

Feature Flags

Each module for a library or framework has its own feature flag with the same name.

For example, this is how you enable the foundation module:

[dependencies.fruity]
version = "0.3.0"
features = ["foundation"]

This feature transitively enables the objc feature/module.

Goals

Idiomatic Rust

Fruity makes interfacing with these C and Objective-C APIs feel natural in Rust.

Zero Cost

Using Fruity to interface with Objective-C libraries should have as little runtime cost as writing the same code directly in Objective-C.

This is true for the following:

Some parts of this library still aren't zero cost. Your help would be much appreciated here!

These are:

License

This project is released under either the MIT License or Apache License (Version 2.0), at your choosing.