memory - 如何将拥有的盒子发送给子任务?

标签 memory task rust

fn main() {
    let mut i = ~100;
    let (port2, chan2) : (Port<int>, Chan<int>) = stream();
        
    chan2.send(i);
        
    do spawn {               
        let i = port2.recv();
        println(format!("==jcpark== i {:?} \n", i));
    }
}

如果let mut i =100,上面的代码可以工作。但如果 i 是一个拥有的盒子,它就不起作用。 你能告诉我如何处理吗?

最佳答案

您已明确定义流的类型为 int , 所以你只能发送 int .如果将其设置为 ~int (通过将类型更改为 (Port<~int>, Chan<~int>) ,然后您将能够发送 ~int

就目前而言,stream 的通用参数正在从 port2 的定义类型中推断出和 chan2 ;实际上可以从 send 中推断出和 recv电话,所以你实际上不需要写 int~int任何地方。

fn main() {
    let i = ~100;
    let (port2, chan2) = stream();
    chan2.send(i);
    do spawn {           
        let i = port2.recv();
        println!("==jcpark== i {:?} \n", i);
    }
}

关于memory - 如何将拥有的盒子发送给子任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20436624/

相关文章:

使用字符串文字处理 char * init 时崩溃,但使用 malloc 时不崩溃

c - 数组内存分配

c++ - 结构内存分配中的 char*

c++ - c++ 数组和内存错误

types - 为什么将字符串解析为数字时会出现错误 "the type of this value must be known in this context"?

c# - 未观察到任务的异常

java - 在 Android 中查找并暂停播放音频的任务

gradle - 如何修改自定义Gradle任务可用的类?

反序列化 reqwest 响应时找不到 json 方法

arrays - 如何为固定大小的 char 数组创建类型别名?