ArcMut

Introduce `ArcMut` struct, utility for FFI. [github][Github-url] [Build][CI-url] [codecov][codecov-url] [docs.rs][doc-url] [crates.io][crates-url] [crates.io][crates-url] license English | [简体中文][zh-cn-url]
## 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>` instead. `ArcMut` 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 ```toml [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-APACHE), [LICENSE-MIT](LICENSE-MIT) for details. Copyright (c) 2024 Al Liu. [Github-url]: https://github.com/al8n/arcmut/ [CI-url]: https://github.com/al8n/arcmut/actions/workflows/ci.yml [doc-url]: https://docs.rs/arcmut [crates-url]: https://crates.io/crates/arcmut [codecov-url]: https://app.codecov.io/gh/al8n/arcmut/ [zh-cn-url]: https://github.com/al8n/arcmut/tree/main/README-zh_CN.md