make-send-sync 0.1.0

Unsafely make any type Send and Sync
Documentation
# Make Send Sync

[![crates.io](https://img.shields.io/crates/v/make-send-sync.svg)](https://crates.io/crates/make-send-sync)
[![docs.rs](https://img.shields.io/docsrs/make-send-sync.svg)](https://docs.rs/make-send-sync)
[![license](https://img.shields.io/crates/l/make-send-sync.svg)](https://unlicense.org/)
[![repository](https://img.shields.io/badge/repo-codeberg.org-blue.svg)](https://codeberg.org/Aseminaunz/make-send-sync)
[![no-std](https://img.shields.io/badge/no--std-compatible-green.svg)](https://docs.rs/make-send-sync)

Wrapper types to unsafely make any type [`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html) and/or [`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html).

```rust
use ::core::{
	cell::UnsafeCell,
	ptr,
};
use ::make_send_sync::{
	UnsafeSendSync,
	UnsafeSync,
};
//!
// A type that is not Send or Sync
let not_thread_safe: *const u8 = ptr::dangling();
//!
let wrapped: UnsafeSendSync<*const u8> = unsafe { UnsafeSendSync::new(not_thread_safe) };
//!
fn assert_send_sync<T: Send + Sync>(_: T) {}
//!
// `wrapper` is Send + Sync, even though `not_thread_safe` is not.
assert_send_sync(wrapped);
//!
// Look! SyncUnsafeCell on stable!
static MY_CELL: UnsafeSync<UnsafeCell<u8>> = unsafe { UnsafeSync::new(UnsafeCell::new(0)) };
```