Reference implementations for the Pact Specification written in Rust
This project contains a reference implementation of the Pact specification written in Rust, often referred to as the Pact Core.
It exposes the core functionality through various crates, as part of the Pact Rust SDK, as well as through FFI (Foreign Function Interface) and CLI (Command Line Interface) for use in other programming languages.
For Rust projects, you can use the Rust crates from this library in your project directly. Refer to the Rust project readme.
This project contains dynamic libraries that expose the core functionality through a C-compatible FFI (Foreign Function Interface).
This project contains a couple of examples which demonstrate how to use the FFI library in a C project, with a focus on showcasing how to call the FFI functions from C:
Most of the Pact SDKs in other languages make use of this FFI library to provide Pact functionality. You can see this in the Ecosystem graph, and the following examples:
- Javascript via pact-js-core
- Ruby via pact-ruby-ffi
- PHP via pact-php
- GoLang via pact-go
- .NET via pact-net
- Swift via pact-swift
- Dart via pact-dart
- C++ via pact-cplusplus
- Python via pact-python
Lastly, you can also refer to Hello Pact FFI for collection of examples in various languages.
This project contains code to support exposing the core functionality through CLI (Command Line Interface).
They are distributed in binary & Docker formats.
To build the libraries in this project, you need a working Rust environment. Requires minimum Rust 1.59.0. Refer to the Rust Guide.
The build tool used is cargo.
cd rust
cargo buildThis will compile all the libraries and put the generated files in rust/target/debug.
See CONTRIBUTING (PRs are always welcome!).
Rust library documentation is published to the Rust documentation site docs.rs. Refer to the Rust project README.
Additional documentation can be found at the main Pact website.
or
- Twitter: @pact_up
- Stack Overflow: stackoverflow.com/questions/tagged/pact
The code in this project is licensed under a MIT license. See LICENSE.