mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-12 00:00:14 +02:00
74 lines
1.7 KiB
Rust
74 lines
1.7 KiB
Rust
// pretend to like `crate::`
|
|||
|
|
extern crate alloc;
|
||
|
|
#[path = "../src/buf/mod.rs"]
|
||
|
|
#[allow(warnings)]
|
||
|
|
mod buf;
|
||
|
|
#[path = "../src/debug.rs"]
|
||
|
|
#[allow(warnings)]
|
||
|
|
mod debug;
|
||
|
|
#[path = "../src/bytes.rs"]
|
||
|
|
#[allow(warnings)]
|
||
|
|
mod bytes;
|
||
|
|
#[path = "../src/bytes_mut.rs"]
|
||
|
|
#[allow(warnings)]
|
||
|
|
mod bytes_mut;
|
||
|
|
use std::process::abort;
|
||
|
|
|
||
|
|
use self::buf::{Buf, BufMut};
|
||
|
|
use self::bytes::Bytes;
|
||
|
|
use self::bytes_mut::BytesMut;
|
||
|
|
|
||
|
|
use std::sync::Arc;
|
||
|
|
use loom;
|
||
|
|
use loom::thread;
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn bytes_cloning_vec() {
|
||
|
|
loom::model(|| {
|
||
|
|
let a = Bytes::from(b"abcdefgh".to_vec());
|
||
|
|
let addr = a.as_ptr() as usize;
|
||
|
|
|
||
|
|
// test the Bytes::clone is Sync by putting it in an Arc
|
||
|
|
let a1 = Arc::new(a);
|
||
|
|
let a2 = a1.clone();
|
||
|
|
|
||
|
|
let t1 = thread::spawn(move || {
|
||
|
|
let b: Bytes = (*a1).clone();
|
||
|
|
assert_eq!(b.as_ptr() as usize, addr);
|
||
|
|
});
|
||
|
|
|
||
|
|
let t2 = thread::spawn(move || {
|
||
|
|
let b: Bytes = (*a2).clone();
|
||
|
|
assert_eq!(b.as_ptr() as usize, addr);
|
||
|
|
});
|
||
|
|
|
||
|
|
t1.join().unwrap();
|
||
|
|
t2.join().unwrap();
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn bytes_mut_cloning_frozen() {
|
||
|
|
loom::model(|| {
|
||
|
|
let a = BytesMut::from(&b"abcdefgh"[..]).split().freeze();
|
||
|
|
let addr = a.as_ptr() as usize;
|
||
|
|
|
||
|
|
// test the Bytes::clone is Sync by putting it in an Arc
|
||
|
|
let a1 = Arc::new(a);
|
||
|
|
let a2 = a1.clone();
|
||
|
|
|
||
|
|
let t1 = thread::spawn(move || {
|
||
|
|
let b: Bytes = (*a1).clone();
|
||
|
|
assert_eq!(b.as_ptr() as usize, addr);
|
||
|
|
});
|
||
|
|
|
||
|
|
let t2 = thread::spawn(move || {
|
||
|
|
let b: Bytes = (*a2).clone();
|
||
|
|
assert_eq!(b.as_ptr() as usize, addr);
|
||
|
|
});
|
||
|
|
|
||
|
|
t1.join().unwrap();
|
||
|
|
t2.join().unwrap();
|
||
|
|
});
|
||
|
|
}
|