66 lines
1.9 KiB
Markdown
66 lines
1.9 KiB
Markdown
# Binding
|
|
|
|
`binding` is a foundational Rust crate providing safe and ergonomic
|
|
abstractions for Foreign Function Interface (FFI) bindings. It serves as the
|
|
core layer for building robust, cross-platform Rust bindings to native C APIs,
|
|
enabling seamless integration between Rust and C codebases.
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
- Safe abstractions over unsafe FFI calls
|
|
- Ergonomic trait-driven interfaces for common binding patterns
|
|
- Cross-platform support for Windows and Linux
|
|
- Designed with zero-cost abstractions in mind, maintaining performance
|
|
- Facilitates building high-quality Rust wrappers around C libraries
|
|
|
|
---
|
|
|
|
## Add to Your Project
|
|
|
|
This library is hosted on the CyberMages registry. To add it to your project,
|
|
the CyberMages registry must be added to your Cargo configuration as described
|
|
in the [Cargo Book](https://doc.rust-lang.org/cargo/reference/registries.html).
|
|
|
|
First, add the registry to your Cargo config (`.cargo/config.toml` or
|
|
`$CARGO_HOME/config.toml`):
|
|
|
|
```toml
|
|
[registries.cybermages]
|
|
index = "sparse+https://workshop.cybermages.tech/api/packages/CyberMages/cargo/"
|
|
```
|
|
|
|
Then add `binding` as a dependency in your `Cargo.toml`:
|
|
|
|
```toml
|
|
[dependencies]
|
|
binding = { version = "0.x", registry = "cybermages" }
|
|
```
|
|
|
|
---
|
|
|
|
## Getting Started
|
|
|
|
## Motivation
|
|
|
|
Working with native C libraries from Rust often requires careful handling of
|
|
unsafe code and complex boilerplate. The `binding` crate aims to reduce this
|
|
friction by providing reusable, well-tested abstractions that improve safety,
|
|
readability, and maintainability of Rust FFI code.
|
|
|
|
---
|
|
|
|
## Copyright & License
|
|
|
|
Copyright 2017 CyberMages LLC
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this library except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS
|