它通过带有 20 条输出线的柔性板连接到计算器,它没有可拆卸的连接器。你能告诉我应该使用什么类型的连接器将这个板连接到 arduino 引脚,前提是我不想手动将每个输出焊接到一个单独的引脚。
我知道可以用 20 针公连接器刺穿这条胶带,前提是电线之间的间距为 1 毫米,但我不知道这能起到多大作用。
我有 2 个线程发送消息,主线程接收它们。为此,我使用mpsc
. 我需要静态初始化它。为此,您需要使其可变。由于通常static mut
是unsafe
,我决定lazy_static!
在包装器中使用它Mutex
。在那里,它本质上是一个互斥引用,可以取消引用并给定一个值(这一切都在safe
Rust 中)
use std::sync::{mpsc::*, *};
use std::thread;
lazy_static::lazy_static! {
static ref MAIN_SENDER: Mutex<Option<Sender<u8>>> = Mutex::new(None);
}
fn ae() {
let tx = MAIN_SENDER.lock().unwrap().clone().unwrap().clone();
thread::spawn(move || { loop {
tx.send(23).unwrap();
thread::sleep(std::time::Duration::from_millis(200));
}});
}
fn main() {
let (tx, rx) = channel();
*MAIN_SENDER.lock().unwrap() = Some(tx);
ae();
for rex in rx {
println!("{}", rex);
}
}
但这仅适用于一个线程。现在我需要为需要传递的 2 个线程执行此操作,Sender
以便它们将消息发送到其上的主线程。为此我使用RwLock
,它对内存读取器没有限制,但只能有一个写入器。此外,从逻辑的角度来看,这是可以做到的,因为子线程只读取存储在其中的内存Sender
,并且已经通过它可以单独发送消息,而不管作者是谁RwLock
use std::sync::{mpsc::*, *};
use std::thread;
lazy_static::lazy_static! {
static ref MAIN_SENDER: RwLock<Option<Sender<u8>>> = RwLock::new(None);
}
fn reqs(var: u8) {
let tx = MAIN_SENDER.read().unwrap().clone().unwrap().clone();
thread::spawn(move || {
loop {
tx.send(var).unwrap();
thread::sleep(std::time::Duration::from_millis(200));
}
});
}
fn main() {
let (tx, rx) = channel();
*MAIN_SENDER.write().unwrap() = Some(tx);
reqs(25);
reqs(14);
for req in rx {
println!("{}", req);
}
}
static ref MAIN_SENDER: RwLock<Option<Sender<u8>>> = RwLock::new(None);
<- Error: std::sync::mpsc::Sender<u8> cannot be shared between threads safely
好吧,我清楚地知道我在地球上拉一只猫头鹰。但是有没有办法Sender
在包装器中存储到静态内存,RwLock
以便可以从safe
Rust 访问它?
老实说,我什至不知道该怎么写unsafe
我正在制作自己的属性宏并注意到一个问题。
添加宏时
#[GET("/")]
fn index() {
load!("../static/index.html")
}
随着错误的出现,它隐藏在宏后面,没有确切的输出行和错误的地方
error[E0308]: mismatched types
--> src\main.rs:3:1
|
3 | #[GET("/")]
| ^^^^^^^^^^^
| |
| expected `u8`, found `&str`
| expected due to this
|
= note: this error originates in the attribute macro `GET` (in Nightly builds, run with -Z macro-backtrace for more info)
有什么方法可以解决这个问题?