如何将自有框发送给子任务?

时间:2013-12-07 01:56:34

标签: 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是一个拥有的盒子,它就不起作用。 你能告诉我怎么办吗?

1 个答案:

答案 0 :(得分:3)

您已明确将流的类型定义为int,因此您只能发送int。如果您将其设置为~int(通过将类型更改为(Port<~int>, Chan<~int>),那么您将能够发送~int

目前,stream的通用参数是从port2chan2的已定义类型推断出来的。实际上可以从sendrecv来电推断,因此您实际上不需要在任何地方写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);
    }
}