Files
rust/tests/ui/threads-sendsync/rc-is-not-send.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

31 lines
482 B
Rust
Raw Normal View History

2025-06-30 00:05:58 +05:00
//! Test that `Rc<T>` cannot be sent between threads.
2014-10-02 08:10:09 +03:00
use std::rc::Rc;
2025-06-30 00:05:58 +05:00
use std::thread;
2015-01-28 08:34:18 -05:00
#[derive(Debug)]
2014-10-02 08:10:09 +03:00
struct Port<T>(Rc<T>);
2013-01-28 23:54:39 -08:00
2025-06-30 00:05:58 +05:00
#[derive(Debug)]
struct Foo {
_x: Port<()>,
}
2025-06-30 00:05:58 +05:00
impl Drop for Foo {
fn drop(&mut self) {}
}
2012-09-05 15:58:43 -07:00
2025-06-30 00:05:58 +05:00
fn foo(x: Port<()>) -> Foo {
Foo { _x: x }
}
2025-06-30 00:05:58 +05:00
fn main() {
2014-10-02 08:10:09 +03:00
let x = foo(Port(Rc::new(())));
2025-06-30 00:05:58 +05:00
thread::spawn(move || {
//~^ ERROR `Rc<()>` cannot be sent between threads safely
let y = x;
println!("{:?}", y);
2014-01-27 18:29:50 -05:00
});
}