pub struct XwmqTx<'a, const N: XwSz, T>where
    [u8; { _ }]: Sized,{ /* private fields */ }Implementations§
source§impl<'a, const N: XwSz, T> XwmqTx<'a, N, T>where
    [u8; { _ }]: Sized,
 
impl<'a, const N: XwSz, T> XwmqTx<'a, N, T>where
    [u8; { _ }]: Sized,
sourcepub fn eq(&self, data: T) -> XwmqError
 
pub fn eq(&self, data: T) -> XwmqError
等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
- 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt。
§参数说明
- data: 类型为 T的数据
§上下文
- 线程
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.eq("message".to_string());
    // ...省略...
}sourcepub fn eq_to(&self, data: T, to: XwTm) -> XwmqError
 
pub fn eq_to(&self, data: T, to: XwTm) -> XwmqError
限时等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待,等待时会指定一个唤醒时间点。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
- 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt。
- 当到达指定的唤醒时间点,线程被唤醒,并返回 XwmqError::Timedout。
§参数说明
- data: 类型为 T的数据
- to: 期望唤醒的时间点
§上下文
- 线程
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::Timedout等待超时
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwtm;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.eq_to("message".to_string(), xwtm::ft(xwtm::s(1)));
    // ...省略...
}sourcepub fn eq_unintr(&self, data: T) -> XwmqError
 
pub fn eq_unintr(&self, data: T) -> XwmqError
等待消息槽,且等待不可被中断,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 发送线程的阻塞等待不可被中断。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为 T的数据
§上下文
- 线程
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.eq_unintr("message".to_string());
    // ...省略...
}sourcepub fn tryeq(&self, data: T) -> XwmqError
 
pub fn tryeq(&self, data: T) -> XwmqError
尝试获取消息槽,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,立即返回 XwmqError::NoSlot。
- 当消息队列中有可用的消息槽时,取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为 T的数据
§上下文
- 任意
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NoSlot消息队列中没有可用的消息槽
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.tryeq("message".to_string());
    // ...省略...
}sourcepub fn jq(&self, data: T) -> XwmqError
 
pub fn jq(&self, data: T) -> XwmqError
等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
- 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt。
§参数说明
- data: 类型为 T的数据
§上下文
- 线程
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.jq("message".to_string());
    // ...省略...
}sourcepub fn jq_to(&self, data: T, to: XwTm) -> XwmqError
 
pub fn jq_to(&self, data: T, to: XwTm) -> XwmqError
限时等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待,等待时会指定一个唤醒时间点。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
- 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt。
- 当到达指定的唤醒时间点,线程被唤醒,并返回 XwmqError::Timedout。
§参数说明
- data: 类型为 T的数据
- to: 期望唤醒的时间点
§上下文
- 线程
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::Timedout等待超时
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwtm;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.jq_to("message".to_string(), xwtm::ft(xwtm::s(1)));
    // ...省略...
}sourcepub fn jq_unintr(&self, data: T) -> XwmqError
 
pub fn jq_unintr(&self, data: T) -> XwmqError
等待消息槽,且等待不可被中断,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 发送线程的阻塞等待不可被中断。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为 T的数据
§上下文
- 线程
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.jq_unintr("message".to_string());
    // ...省略...
}sourcepub fn tryjq(&self, data: T) -> XwmqError
 
pub fn tryjq(&self, data: T) -> XwmqError
尝试获取消息槽,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,立即返回 XwmqError::NoSlot。
- 当消息队列中有可用的消息槽时,取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过 Box将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为 T的数据
§上下文
- 任意
§错误码
- XwmqError::Ok没有错误
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NoSlot消息队列中没有可用的消息槽
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.tryjq("message".to_string());
    // ...省略...
}Trait Implementations§
impl<'a, const N: XwSz, T> Send for XwmqTx<'a, N, T>where
    [u8; { _ }]: Sized,
impl<'a, const N: XwSz, T> !Sync for XwmqTx<'a, N, T>where
    [u8; { _ }]: Sized,
Auto Trait Implementations§
impl<'a, const N: usize, T> Freeze for XwmqTx<'a, N, T>where
    [u8; { _ }]: Sized,
impl<'a, const N: usize, T> !RefUnwindSafe for XwmqTx<'a, N, T>
impl<'a, const N: usize, T> Unpin for XwmqTx<'a, N, T>where
    [u8; { _ }]: Sized,
impl<'a, const N: usize, T> !UnwindSafe for XwmqTx<'a, N, T>
Blanket Implementations§
§impl<T> Any for Twhere
    T: 'static + ?Sized,
 
impl<T> Any for Twhere
    T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
    T: ?Sized,
 
impl<T> Borrow<T> for Twhere
    T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
§unsafe fn clone_to_uninit(&self, dst: *mut T)
 
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)