#arc #ffi #bindings

no-std arcmut

Introduce ArcMut, utility for FFI

1 unstable release

0.1.0 Jan 10, 2024

#668 in Concurrency

MIT/Apache

24KB
418 lines

ArcMut

Introduce ArcMut struct, utility for FFI.

github Build codecov

docs.rs crates.io crates.io

license

English | 简体中文

Introduction

ArcMut is a reference-counted pointer to a value of type T, which can be mutated.

Note: This struct is not thread-safe!!!

In normal Rust code, you are not expected to use this type, but when you are writing FFI code, you may need to use this type to share a value between Rust and other languages, and again, if the code in other languages is concurrent, you are encouraged to use a Arc<Mutex<T>> instead.

ArcMut<T> provides shared ownership of a value of type T, allocated in the heap. Invoking clone on ArcMut produces another pointer to the same allocation in the heap. When the last ArcMut pointer to a given allocation is destroyed, the value stored in that allocation (often referred to as "inner value") is also dropped.

This is similar to std::sync::Arc, but it allows interior mutability.

Installation

[dependencies]
arcmut = "0.1"

License

arcmut is under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE, LICENSE-MIT for details.

Copyright (c) 2024 Al Liu.

Dependencies

~0–26MB
~357K SLoC