我正在努力理解《铁 rust https://doc.rust-lang.org/std/pin/》中的Pin.
大意是明确的 一百零二
我正在为Box
写一个带Pin
和不带Pin
的函数.我得到了完全相同的结果.如何更改代码才能看到Pin
的效果?
use std::fmt::{self, Debug};
use std::pin::Pin;
fn foo_pin<T: Debug>(s: Pin<Box<T>>) {
let copys = s;
println!("Hi from Box: {:?}", copys);
//println!("Hi from Box: {:?}", s); // ERROR borrow of moved value: `s`
}
fn foo<T: Debug>(s: Box<T>) {
let copys = s;
println!("Hi from Box: {:?}", copys);
//println!("Hi from Box: {:?}", s); // ERROR borrow of moved value: `s`
}
fn main() {
// i32
let b = Box::new(1);
foo_pin(Pin::new(b));
let b2 = Box::new(2);
foo(b2);
/*
// &str
let b = Box::new("abc");
foo_pin(Pin::new(b));
let b2 = Box::new("123");
foo(b2);
*/
}