@rfcbotfcpăăźă¸
ćŠč˝ĺďź pin
ĺŽĺŽĺçŽć¨ďź1.32.0
追补ăŽĺéĄďźďź49150
é˘éŁăăRFCďźrust-lang / rfcsďź2349
ăăăŻă pin
ăŠă¤ăăŠăŞćŠč˝ăĺŽĺŽăăăăăăłçăăăčĄăăăăŽććĄă§ăă
ĺŽĺŽçă§ä˝żç¨ĺŻč˝ăŞĺşĺŽăĄă˘ăŞăćä˝ăăăăăŽAPIă
ďźç§ăŻăăŽććĄăĺ ćŹçăŞăĺŽĺŽĺăŹăăźăăă¨ăăŚć¸ăăă¨ăăžăăăďź
[std|core]::pin::Pin
ăăăŤăăă std
/ core
ăŽpin
ăľăă˘ă¸ăĽăźăŤăŽPin
ăżă¤ăăĺŽĺŽăăžăă Pin
ăŻ
ă¸ă§ăăŞăăŻĺP
ĺşćŹçăŞééââăŠăăăźă
ăă¤ăłăżĺăŤăŞăăžăďźăă¨ăă°ă Pin<&mut T>
ă¨Pin<Box<T>>
ăŻä¸Ąćšă¨ă
ćĺšăŞćĺłăăăć§ćďźă Pin
ăŠăăăźăŻăăăăłăă¸ăŽăă¤ăłăżăźăĺ¤ć´ăăžă
ăăăĺç
§ăăăĄă˘ăŞăćĺŽăŽä˝ç˝ŽăŤăăăăŚăźăśăźăăŞăă¸ă§ăŻăă秝ĺăăăŽăé˛ăăžă
ăăŽč¨ćśăŽă
Pin
ăżă¤ăă使ç¨ăăé常ăŽćšćłăŻăăăă¤ăăŽĺşĺŽăăăăăŞă˘ăłăăä˝ćăăăă¨ă§ăă
ććăăăă¤ăłăżăŽç¨ŽéĄďź Box
ă Rc
ăŞăŠďźă ăăšăŚăŽăă¤ăłăżăććăăć¨ćşăŠă¤ăăŠăŞ
ăăăčżăpinned
ăłăłăšăăŠăŻăżăźăćäžăăžăă 揥ăŤăăćä˝ăăăŤăŻ
ĺ
é¨ăŽĺ¤ăăăăăŽăă¤ăłăżăŻăăšăŚă Pin<&T>
ĺăăŁăŚä˝ä¸ăăćšćłăćäžăăžă
ăăăłPin<&mut T>
ă ĺşĺŽăăăăă¤ăłăżăŻĺç
§ăĺăćśăăă¨ăă§ăă &T
ăčżăăžăăăă§ăăžăă
ĺŽĺ
¨ăŤĺŻĺ¤çăŤderefďźăăăŻĺŽĺ
¨ă§ăŞăget_mut
ă使ç¨ăăŚăŽăżĺŻč˝ă§ă
é˘ć°ă
ăăŽçľćăăăłăäťăăŚăăźăżăĺ¤ć´ăăäşşăŻčŞ°ă§ăă
ăăăăăăŽăăźăżăă秝ĺăăăă¨ăŻćąşăăŚăŞăă¨ăăä¸ĺ¤ćĄäťśă ăăăŤăăăäťăŽăłăźăă§
ăăźăżă秝ĺăăăăă¨ăŻăŞăă¨ĺŽĺ
¨ăŤćłĺŽăăăăźăżăŤďź
äžďźčŞĺˇąĺç
§ă
Pin
ăżă¤ăăŤăŻă揥ăŽĺŽĺŽĺăăăAPIăăăăžăă
impl<P> Pin<P> where P: Deref, P::Target: Unpin
fn new(pointer: P) -> Pin<P>
impl<P> Pin<P> where P: Deref
unsafe fn new_unchecked(pointer: P) -> Pin<P>
fn as_ref(&self) -> Pin<&P::Target>
impl<P> Pin<P> where P: DerefMut
fn as_mut(&mut self) -> Pin<&mut P::Target>
fn set(&mut self, P::Target);
impl<'a, T: ?Sized> Pin<&'a T>
unsafe fn map_unchecked<U, F: FnOnce(&T) -> &U>(self, f: F) -> Pin<&'a U>
fn get_ref(self) -> &'a T
impl<'a, T: ?Sized> Pin<&'a mut T>
fn into_ref(self) -> Pin<&'a T>
unsafe fn get_unchecked_mut(self) -> &'a mut T
unsafe fn map_unchecked_mut<U, F: FnOnce(&mut T) -> &mut U>(self, f: F) -> Pin<&'a mut U>
impl<'a, T: ?Sized> Pin<&'a mut T> where T: Unpin
fn get_mut(self) -> &'a mut T
Pin
ăŽçšć§ăŽćéťăŽăťă¨ăăŠăŻăăŞăč
ăŁăŚăăžăăăăăăŽ2ă¤ăŻ
ăăŽćä˝ďź
impl<P: Deref> Deref for Pin<P> { type Target = P::Target }
impl<P: DerefMut> DerefMut for Pin<P> where P::Target: Unpin { }
std::marker::Unpin
UnpinăŻăăăłçăăŽäżč¨źăăŞăăă˘ăŚăăăĺŽĺ
¨ăŞčŞĺçšć§ă§ăă ăŽĺ ´ĺ
ĺşĺŽăăăăă¤ăłăżăŽăżăźă˛ăăăŻUnpin
ĺŽčŁ
ăăĺ¤ć´ĺŻč˝ăŤĺŽĺ
¨ă§ă
ăăă¸ăŽéćĽĺç
§ă Unpin
ăżă¤ăăŤăŻăăăă§ăŞăă¨ăăäżč¨źăŻăăăžăăă
Pin
ăă秝ĺăăăžăă
ăăăŤăăăĺşĺŽăăăĺç
§ăĺŚçăăăŽăäşşé塼ĺŚçă§ăă
ĺşĺŽăăăŚăăŞăăăŽăĺŚçăăăăăčŞĺˇąĺç
§ăŻĺŤăžăăŚăăžăă
ĺç
§ă Pin
ăŽäżč¨źăŻă揥ăŽăăăŞçšćŽăŞăąăźăšăżă¤ăăŤăŽăżé˘äżăăžăă
čŞĺˇąĺç
§ć§é ďźăăăăŽĺăŻUnpin
ĺŽčŁ
ăăŚăăŞăăăă
Pin
ăżă¤ăăŽĺśéă
stdă§ăŽUnpin
注çŽăăšăĺŽčŁ
ďź
impl<'a, T: ?Sized> Unpin for &'a T
impl<'a, T: ?Sized> Unpin for &'a mut T
impl<T: ?Sized> Unpin for Box<T>
impl<T: ?Sized> Unpin for Rc<T>
impl<T: ?Sized> Unpin for Arc<T>
ăăăăŻăăăłçăăăă¤ăłăżăźéă§ć¨ç§ťçă§ăŻăŞăă¨ăăćŚĺżľăććĺăăŚăăžăă ăă
ă¤ăžăă Pin<&T>
ăŻă T
ă§čĄ¨ăăăĺŽéăŽăĄă˘ăŞăăăăŻăŽăżăăăłçăăăžăă
ĺ ´ćă ăŚăźăśăźăŻććăăăŤćˇˇäšąăăăżă¤ăă
Pin<&mut Box<T>>
ăăăŤă T
ăŽăăźăżăćĺŽăŽä˝ç˝ŽăŤĺşĺŽăăžăăăĺşĺŽăăăŽăŻ
ĺşĺŽăăăĺç
§ăĺŽéăŤĺç
§ăăăĄă˘ăŞďźăăŽĺ ´ĺă Box
's
ăăźăă¸ăŽăă¤ăłăżă§ăă襨çžă
std::marker::Pinned
Pinned
ăżă¤ăăŻă Unpin
ĺŽčŁ
ăăŞăZSTă§ăă ăăăŻăăŞăăăăăă¨ăĺŻč˝ăŤăăžă
ĺŽĺŽçă§ăŽUnpin
ăŽčŞĺĺŽčŁ
ăćĺśăăžăăăăă§ă !Unpin
ăžă ĺŽĺŽăăŚăăžăăă
ăłăłăšăăŠăŻăżăźăstdăšăăźăăă¤ăłăżăźăŤčż˝ĺ ăăăĺşĺŽăăăĺç §ăä˝ćăăăžăă
Box::pinned(data: T) -> Pin<Box<T>>
Rc::pinned(data: T) -> Pin<Rc<T>>
Arc::pinned(data: T) -> Pin<Arc<T>>
éĺť9ăćéăăăłçăAPIăŻćŹĄăŽăăăŤć°ĺçš°ăčżăăăžăăă
ç§ăăĄăŻĺ˝źăăŽčĄ¨çžĺă¨ĺ˝źăăŽĺĽĺ
¨ć§ă調ćťăăžăă
äżč¨źăăžăă ăăă§ăăłçăAPIăĺŽĺŽăăă¨čŞäżĄăćăŁăŚč¨ăăžă
ĺĽĺ
¨ă§ăäşşé塼ĺŚăŽćĽľĺ¤§ĺ¤ăŤĺĺăŤčżă
襨çžĺ; ă¤ăžăăĺŽĺŽĺăŽćşĺăă§ăăŚăăžăă
ĺşĺŽăŽéŁăăĺéĄăŽ1ă¤ăŻăăă¤ĺŽĺ
¨ăŤĺŽčĄă§ăăăăĺ¤ćăăăă¨ă§ăă
ăăłăăă¸ă§ăŻăˇă§ăłďźă¤ăžăă Pin<P<Target = Foo>>
ăă
Pin<P<Target = Bar>>
ăăăă§Bar
ăŻFoo
ăăŁăźăŤăă§ăă 嚸ăăŞăă¨ăŤă
ăŚăźăśăźăăăŽăăăŞăăŽăăŠăăăĺ¤ćăăăŽăŤĺ˝šçŤă¤ä¸éŁăŽăŤăźăŤăä˝çłťĺăăăă¨ăă§ăăžăă
ć役ăŻĺŽĺ
¨ă§ăďź
(Foo: Unpin) implies (Bar: Unpin)
ĺ ´ĺăŤăŽăżăăăă¸ă§ăŻăăĺşĺŽăăăŽăĺŽĺ
¨ă§ăăFoo
ďźĺŤăăżă¤ăďźăUnpin
ă§ăăăă¨ăćąşăăŚăŞăĺ ´ĺăŻăBar
ďźć役ăăăăżă¤ăďźăŻUnpin
ăŻăăăžăăăFoo
ç ´ĺŁä¸ăŤBar
ă秝ĺăăăŞăĺ ´ĺăŤăŽăżăĺŽĺ
¨ă§ăăFoo
ăŤăăšăăŠăŻăżăăŞăăăăăšăăŠăŻăżăć
éăŤĺĺ¨ăăăă¨ăćĺłăăžăFoo
ďźĺŤăăżă¤ăďźărepr(packed)
ă§ăŞăĺ ´ĺăŤăŽăżăĺŽĺ
¨ă§ăăăăăŤăstd APIăŻăăŞăă¸ă§ăŻăăăšăżăăŻăŤĺşĺŽăăĺŽĺ
¨ăŞćšćłăćäžăăžăăă
ăăăŻăé˘ć°APIă使ç¨ăăŚĺŽĺ
¨ăŤĺŽčŁ
ăăćšćłăăŞăăăă§ăă
ăă ăăăŚăźăśăźăŻă確ĺŽăŤăšăżăăŻăŤĺşĺŽăăăă¨ăă§ăăžăă
ĺşĺŽăăăĺç
§ăä˝ćăăĺžăŻăăŞăă¸ă§ăŻăăĺ庌秝ĺăăŞăă§ăă ăăă
crates.ioăŽpin-utils
ăŻăŹăźăăŤăŻă严ćšăŽăšăżăăŻăćŻć´ăăăăŻăăĺŤăžăăŚăăžă
ăăłçăă¨ăăłć役ă ăšăżăăŻĺşĺŽăăŻăăŻăăŞăă¸ă§ăŻăăĺŽĺ
¨ăŤĺşĺŽăăžăă
ć役ç¨ăŽăăŻăăĺĺ¨ăăăŽăŤĺŻžăăăˇăŁăăŚă¤ăłă°ăĺŤăăăŞăăŻă使ç¨ăăŚăšăżăăŻăăžă
ăăăŻĺŽĺ
¨ă§ăŻăăăžăăăăĺ°ĺ˝ąĺŽĺćăć¸ăĺż
čŚăŻăăăžăă
äťăŽčޤăŁăĺŽĺ
¨ă§ăŞăăłăźăăĺ°ĺ
ĽăăĺŻč˝ć§ăăăăžăă
Unpin
ăă¨ăŻăšăăźăăă pin::Unpin
ĺé¤ăăŚĺă¨ăŻăšăăźăăăžăĺĺă¨ăăŚăstdĺ
ăŽč¤ć°ăŽĺ ´ćăăçŠăĺă¨ăŻăšăăźăăăăă¨ăŻăăăžăăă
1ă¤ăŻĺŽéăŽĺŽçžŠăŽăšăźăăźă˘ă¸ăĽăźăŤă§ăďźäžďźç縎
std::collections::hash_map::HashMap
ăăstd::collections::HashMap
ďźă ăăŽăă
ççąăŻă std::pin::Unpin
ăăăŽstd::marker::Unpin
ăŽĺă¨ăŻăšăăźăăŻ
ĺ ´ćă
ĺćăŤăé俥ăĺćăŞăŠăŽäťăŽéčŚăŞăăźăŤăźçšć§ăĺŤăžăăŚăăžă
ăăŹăŞăĽăźăă§ă ăăăăŁăŚă pin
ă˘ă¸ăĽăźăŤăăUnpin
ăĺă¨ăŻăšăăźăăă䝣ăăăŤă
ăăŹăŞăĽăźăăĺ
Ľăăă¨ă std::marker::Unpin
ăă¤ăłăăźăăăĺż
čŚăăŞăăŞăăžăă
ăăăpin
ăŤĺ
ĽăăăăăŽă¨ĺăççąă
çžĺ¨ă Pin
ăŽé˘éŁé˘ć°ăŽĺ¤ăăŻăăĄă˝ăăć§ćă使ç¨ăăŚăăžăăă
çčŤçăŤăŻăăăăŻărefrefableĺ
é¨ăĄă˝ăăă¨ăŽçŤśĺăĺéżăăăăă§ăă ăăăăŞăăă
ăăŽăŤăźăŤăŻä¸č˛ŤăăŚéŠç¨ăăăŚăăăăç§ăăĄăŽçľé¨ă§ăŻăťă¨ăăŠ
çŠäşăăăä¸äžżăŤăăžăăă ĺşĺŽăăăăă¤ăłăżăŻä¸ĺ¤ăŽăżăĺŽčŁ
ăăžă
derefăĺ¤ć´ä¸ĺŻč˝ăŞderefăžăăŻĺ¤ăŤăăderefăderefăŽćŠč˝ăĺśéăă
ă¨ăŤăăă ăăăŤăăăăăŽĺĺăŽĺ¤ăăŻăăŞăä¸ćă§ăďźäžďź map_unchecked
ďź
獜ĺăăĺŻč˝ć§ăŻä˝ăă§ăă
䝣ăăăŤă Pin
ăĄă˝ăăăŤéŠĺăŞĺŞĺ
é ä˝ăä¸ăăăă¨ăăĺ§ăăăžăă ăăăŚăźăśăź
ĺ
çšćłăŤă˘ăŻăťăšăăĺż
čŚăăăĺ ´ĺăŻăUFCSă使ç¨ă§ăăžăă
ăĄă˝ăăć§ćă使ç¨ăăŞăăŁăĺ ´ĺăPinăĄă˝ăăăŤă˘ăŻăťăšăăăăăŤĺż
čŚă§ăă
get_mut_unchecked
ĺĺăget_unchecked_mut
çžĺ¨ăŽé ĺşăŻăć¨ćşăŠă¤ăăŠăŞăŽäťăŽç¨éă¨ä¸č´ăăŚăăžăăă
impl<P> Unpin for Pin<P>
ĺé¤ăăžăăăŽimplăŻăĺşĺŽč§Łé¤implăŽć¨ćşçăŞćŁĺ˝ĺăŤăăŁăŚćŁĺ˝ĺăăăžăăă Pin<P>
ă¨P
éăŤăă¤ăłăżăźćšĺăŻăăăžăăă ăăŽćç¨ć§ăŻăăă¤ăłăżčŞä˝ăŽimplăŤăăŁăŚăŤăăźăăăŚăăžăă
ăăŽĺ
çŠimplăŻă P: Unpin
ăăŚăłăăčż˝ĺ ăăăăăŤĺ¤ć´ăăĺż
čŚăăăăžăă
Pin
ărepr(transparent)
ă¨ăăŚăăźăŻăăžăăăłăŻăĺă襨çžă§ăăăŽä¸ăŽăă¤ăłăżăźăŽĺ¨ăăŽéćăŞăŠăăăźă§ăăĺż čŚăăăăžăă
ăăłAPIăŻăăĄă˘ăŞăŽăťăŻăˇă§ăłăĺŽĺ
¨ăŤćä˝ăăăăăŤéčŚă§ăă
秝ĺăăăŞăăă¨ăäżč¨źăăăžăă ăăŽăĄă˘ăŞĺ
ăŽăŞăă¸ă§ăŻăăăăă§ăŞăĺ ´ĺ
Unpin
ĺŽčŁ
ăăă¨ăă˘ăăŹăšăĺ¤ć´ăăăăă¨ăŻăăăžăăă ăăăŻ
čŞĺˇąĺç
§ă¸ă§ăăŹăźăżăźă¨éĺćé˘ć°ăä˝ćăăžăă çľćă¨ăăŚă
Pin
ăżă¤ăăŻć¨ćşăŠă¤ăăŠăŞfuture
APIăŤčĄ¨ç¤şăăăăžăăŞăçťĺ ´ăăžă
ă¸ă§ăăŹăźăżăźăŽAPIăŤă襨示ăăăžăďźďź55704ďźă
Pin
ăżă¤ăă¨ăăŽAPIăĺŽĺŽăăăăă¨ăŻăĺŽĺŽăăăăăăŤĺż
čŚăŞĺĺ
ă§ăă
Future
APIăŻăăăčŞä˝ăĺŽĺŽĺăŤĺż
čŚăŞĺĺ
ă§ăă
async/await
ć§ćă¨futures 0.3
éĺćIOă¨ăłăˇăšăă ĺ
¨ä˝ăŽç§ťĺ
ĺŽĺŽăăéăŤă
cc @cramertj @RalfJung
@rfcbotfcpăăźă¸
ăăźă ăĄăłăăź@withoutboatsăŻăăăăăźă¸ăăăă¨ăććĄăăžăăă 揥ăŽăšăăăăŻăăżă°äťăăăăćŽăăŽăăźă ăĄăłăăźăŤăăăŹăăĽăźă§ăă
ć¸ĺżľäşé ďź
ăŹăăĽăźă˘ăŽéĺć°ăćżčŞăăă¨ďźăăăŚć大2ă¤ăŽćżčŞăćŞč§ŁćąşăŤăŞăă¨ďźăăăăćçľăłăĄăłăćéăŤĺ Ľăăžăă ăăŽăăăťăšăŽăŠăŽćçšă§ăć辡ăăăŚăăŞă大ăăŞĺéĄăčŚă¤ăăĺ ´ĺăŻă声ăä¸ăăŚăă ăăă
ăżă°äťăăăăăăźă ăĄăłăăźăç§ăŤä¸ăăăă¨ăă§ăăăłăăłăăŤă¤ăăŚăŻăăăŽăăăĽăĄăłăăĺç §ăăŚăă ăăă
@withoutboatsă§čŠłç´°ăŞč¨äşăć¸ăăŚăăăŚăăăă¨ăďź ăžăăć´ĺ˛çăŤPin
ăŽăăžăăžăŞäżč¨źăŤćˇˇäšąăăŚăăžăăăăçžĺ¨ăĺŽĺ
¨ć§ăŽäżč¨źăŤé˘ăăŚăăă§ĺŽĺŽĺăăăŚăăAPIăŤă¤ăăŚăăă¤ă質ĺăăăăžăă ç§ăŻăăăăŽăă¨ăć¸ăçăăăă¨ćăŁăăŽă§ăăăăăăčŞĺăŽé ăŽä¸ă§ć´çăăăŽăĺŠăăăăăŤă
ă Unpin
ä˝ă§ăăďźăă¨ăăĺŁăŤăśă¤ăăçśăăžăăăăăăć¸ăĺ§ăăăă¨ăăŚăăžăă ç§ăŻăăăä˝ă§ăăăăăăăŚăăăĺă塝ăăăžăăžăŞäżč¨źăŤĺ°ă桡䚹ăăŚăăžăă T
ăŤĺŻžăăŚăăžăUnpin
ĺŽčŁ
ăăŞăăă¨ăŽćĺłăăăä¸ĺşŚă芹ăăăă ăăžăăďź ăžăă Unpin
ăăăăç´ ć´ăŤĺŽčŁ
ăăăăăŽĺŽĺ
¨ăŞçšć§ă§ăăĺ ´ĺă Pin<T>
ăŽĺąéşăŞäżč¨źăç°ĄĺăŤćăŞăăăăŤä˝żç¨ă§ăăăăăŤćăăăžăăăç§ăŻç˘şăăŤä˝ăăčŚéăăŚăăžă
ăăăćŁăăăă°ăčŞĺˇąĺç §ă§ăŻăŞăďźă¤ăžăăă¸ă§ăăŹăźăżă§ăŻăŞăďźăăšăŚăŽăżă¤ăăĺşĺŽč§Łé¤ăăăžă
ăăăŻčŞĺˇąĺç
§ă ăă§ăŞăă Pin
ă§ăăľăăźăă§ăăĺŽĺŽăăăĄă˘ăŞă˘ăăŹăšăŽä˝żç¨äžăăăă¤ăăăăžăă ăăăăăăăăŻćŻčźçĺ°ăŞăăăăŽä¸éă§ăă
Unpin
ăĺŽĺ
¨ăŤĺŽčŁ
ă§ăăăă¨ăç§ăç解ăăćšćłăŻăăăăĺŽčŁ
ăăăă¨ăŤăăŁăŚăăăŞăăć¸ăăäťăŽĺŽĺ
¨ă§ăŞăăłăźăăŤĺż
čŚăŞä¸ĺ¤ćĄäťśăŤéĺăăĺŻč˝ć§ăăăă¨ăăăă¨ă§ăďźéčŚăŞăŽăŻăăăŽĺŽĺ
¨ă§ăŞăăłăźăăć¸ăăă¨ăă§ăăăŽăŻăăŞăă ăă§ăăăĺ¤é¨ăłăźăăŻUnpin
ăĺŽčŁ
ăăžăăďźă Unpin
ăĺŽčŁ
ăăăăŠăăăŤé˘äżăŞăăä¸ĺĽĺ
¨ăăĺźă辡ăăPin
ăŽĺŽĺ
¨ăŞAPIă§ă§ăăăă¨ăŻä˝ăăăăžăăă Pin
ăŽĺŽĺ
¨ă§ăŞăAPIăŽä¸é¨ă使ç¨ăăăă¨ăé¸ćăăăă¨ăŤăăăĺŽĺ
¨ăŞĺ ´ĺăŤăŽăżUnpin
ĺŽčŁ
ăăăă¨ăäżč¨źăăăžăă ăăăŻăä¸č¨ăŽăăăłçăă¨ĺŽĺ
¨ć§ăŤé˘ăă注ćäşé
ăăťăŻăˇă§ăłăŽăă¤ăłă1ă§čŞŹćăăăŚăăžăă
ăăźăăç§ăŻăžă Unpin
ćŹĺ˝ăŤç解ăăŚăăžăăă ç§ăŻćĺă Unpin
ăĺŽčŁ
ăăăă¨ă¨ć¨é˛ăăŞăăă¨ăŽćĺłăç解ăăăă¨ăăŚăăžăă
ăžăăăŠăŽăżă¤ăăUnpin
čŞĺçăŤĺŽčŁ
ăăăăçĽăăă¨ăŻăăăă彚ăŤçŤăĄăžăďź ä¸čŹçăŞăă¤ăłăżăżă¤ăďźArc / Rc / Box / referenceďźăUnpin
ĺŽčŁ
ăăăă¨ăŻĺčż°ăăžăăăăăăă ăă ă¨ćăăžăăďź ăăăčŞĺçšć§ă§ăăĺ ´ĺăăăăŻăĺMyType
ăăă¤ăłăżăźăŽăżăĺŤăĺ ´ĺăčŞĺçăŤUnpin
ĺŽčŁ
ăăăă¨ăćĺłăăžăăďź ăžăăŻăäťăŽăżă¤ăăUnpin
čŞĺçăŤĺŽčŁ
ăăžăăăďź
Unpin
ä˝ăäżč¨źăăăăŞăŠăčŚç´ăăăčż°ăšăăăăăă¨ăăŚăăžăăăăăăăăŽăŻćŹĺ˝ăŤéŁăăă¨ćăăŚăăžăă Unpin
ăĺŽčŁ
ăăăă¨ăŽćĺłă¨ă Unpin
ĺŽčŁ
ăăŞăăă¨ăŽćĺłăăăä¸ĺşŚçš°ăčżăăă¨ă§ă誰ăăćĺŠăă§ăăžăăďź
P::Target
ăŽă¤ăłăŠă¤ăłăĄăłăăźăă秝ĺă§ăăŞăPin<P>
ăŽäżč¨źăç解ăăŚăăă¨ćăăžăăăăăă§ăăďź
@alexcrichton質ĺăăăăă¨ăăăăłçăAPIăŻăăăăăŤçŚçšăĺ˝ăŚăŚăăă°ăŤăźăăŤĺĺ ăăŚăăŞăäşşăŤă¨ăŁăŚăŻĺ°ă桡䚹ăăĺŻč˝ć§ăăăă¨ç˘şäżĄăăŚăăžăă
ăžăăUnpinăčŞĺçăŤĺŽčŁ ăăăżă¤ăăçĽăŁăŚăăă¨ĺ˝šăŤçŤăĄăžăă
UnpinăŻăSendăSyncăŽăăăŞčŞĺçšć§ă§ăăăăăăťă¨ăăŠăŽăżă¤ăă§čŞĺçăŤĺŽčŁ
ăăăžăă ă¸ă§ăăŹăźăżăźă¨éĺćé˘ć°ăŽăżă¤ăăŻ!Unpin
ă§ăă ă¸ă§ăăŹăźăżăźăžăăŻéĺćé˘ć°ćŹä˝ăĺŤăĺŻč˝ć§ăŽăăĺďźă¤ăžăăĺăăŠăĄăźăżăźăćă¤ĺďźăăĺăăŠăĄăźăżăźăĺŤăžăăŚăăŞăéăăčŞĺçăŤUnpin
ăŻăŞăăžăăă
ăă¤ăłăżĺăŽć示çăŞĺŽčŁ
ăŻăĺăăŠăĄăźăżăăăă§ăŞăĺ ´ĺă§ăUnpin
ăä˝ćăăăă¨ă§ăă ăăŽççąăŻăăăŽăłăĄăłăăŽçľăăăžă§ăŤćăăăŤăŞăăă¨ăéĄăŁăŚăăžăă
UnpinăĺŽčŁ ăăăă¨ăŽćĺłă¨ăUnpinăĺŽčŁ ăăŞăăă¨ăŽćĺłăăăä¸ĺşŚçš°ăčżăăă¨ă§ă誰ăăćĺŠăă§ăăžăăďź
ăăăăăăłçăAPIăŽĺşćŹçăŞčăćšă§ăă ăžăăăă¤ăłăżĺăP
ĺ ´ĺă Pin<P>
ăŻP
ăăăŤćŠč˝ăăžăăă P::Target
ăUnpin
ĺŽčŁ
ăPin
é˘éŁăă2ă¤ăŽĺşćŹçăŞä¸ĺ¤ăŽĺŽĺ
¨ă§ăŞăăłăźăăçśćăăĺż
čŚăăăăžăă
Pin<P>
ăă&mut P::Target
ăĺŽĺ
¨ăŤĺĺžă§ăăŞăĺ ´ĺăŻă P::Target
秝ĺăăŞăă§ăă ăăăPin<P>
ă§ăăĺ ´ĺăŻăăăšăăŠăŻăżăĺŽčĄăăăăžă§ăăă¤ăłăżăćăăăźăżă¸ăŽĺşĺŽăăăŚăăŞăăă¤ăłăżăĺĺžă§ăăŞăăă¨ăäżč¨źăăĺż
čŚăăăăžăăăăăăăšăŚăŽćĺłăăă¨ăăăŻă Pin<P>
ăä˝ćăăĺ ´ĺă P
ăćăĺ¤ăŻäşĺşŚă¨ç§ťĺăăŞăă¨ăăăă¨ă§ăăăăăŻăčŞĺˇąĺç
§ć§é ä˝ă¨äžľĺ
Ľĺć§é ä˝ăŤĺż
čŚăŞäżč¨źă§ăăăłăŹăŻăˇă§ăłă ăă ăăăżă¤ăăŤUnpin
ăĺŽčŁ
ăăă ăă§ăăăŽäżč¨źăăŞăăă˘ăŚăă§ăăžăă
ăăăăŁăŚăĺăŤUnpin
ăĺŽčŁ
ăăă¨ăăăŽĺăŻPin
čż˝ĺ ăŽĺŽĺ
¨äżč¨źăăŞăăă˘ăŚăăăă¨č¨ăăžăăăăăŻăăăăćăăă¤ăłăżăźăĺŻĺ¤çăŤéĺç
§ăăăă¨ăĺŻč˝ă§ăă ăăăŻăăżă¤ăăĺŽĺ
¨ăŤä˝żç¨ăăăăăŤä¸ĺă§ăăĺż
čŚăŻăŞăă¨ăăăă¨ăćĺłăăžăă
T
ăŻăă¤ăłăżăźăŽĺžăăŤăăăăă Rc<T>
ăăăŞăă¤ăłăżăźĺă秝ĺăăŚăT
ăŻç§ťĺăăžăăă ĺć§ăŤăďź Pin<Box<Rc<T>>
ďź Rc<T>
ăă¤ăłăżăźăĺşĺŽăăŚăăĺŽéăŤăŻT
ăŻĺşĺŽăăăăăăŽçšĺŽăŽăă¤ăłăżăźăŽăżăĺşĺŽăăăžăă ăăăăă¸ă§ăăŞăăŻăăă¤ăłăżăźăŽĺžăăŤäżćăăăăŽăŻăă¸ă§ăăŞăăŻăĺŽčŁ
ăăăŚăăŞăĺ ´ĺă§ăUnpin
ĺŽčŁ
ă§ăăççąă§ăă
ăžăăUnpinăăăăç´ ć´ăŤĺŽčŁ ăăăăăŽĺŽĺ ¨ăŞçšć§ă§ăăĺ ´ĺăPinăŽĺąéşăŞäżč¨źăç°ĄĺăŤćăŞăăăăŤä˝żç¨ă§ăăăăă§ăă
ăăăăç§ăŻç˘şăăŤä˝ăăćŹ ăăŚăăžă
ăăăŻăăăłçăAPIăŽćăéŁăăé¨ĺăŽ1ă¤ă§ăăăćĺăŻééăŁăŚăăžăăă
ĺşĺŽč§Łé¤ă¨ăŻăăăăłăŤä˝ăăĺ
Ľăăăăĺžă§ăăăăă¸ăŽĺ¤ć´ĺŻč˝ăŞĺç
§ăĺĺžăăŚăĺŽĺ
¨ă§ăăăă¨ăăćĺłă§ăă ĺăă˘ăŻăťăšăćäžăăäťćĽĺĺ¨ăăĺĽăŽçšć§ăăăăžăďź Drop
ă ă¤ăžăă Drop
ăŻĺŽĺ
¨ă§ăăăăă Unpin
ăĺŽĺ
¨ă§ăăĺż
čŚăăăăă¨ăăăăăžăăă ăăăŻăˇăšăă ĺ
¨ä˝ăćăŞăăžăăďź ĺŽĺ
¨ă§ăŻăăăžăăă
čŞĺˇąĺç
§ĺăĺŽéăŤĺŽčŁ
ăăăŤăŻăĺŽĺ
¨ă§ăŞăăłăźăăĺż
čŚăŤăŞăăžăăĺŽéăŤăŻă誰ăăć°ăŤăăčŞĺˇąĺç
§ĺăŻăăłăłăă¤ăŠăźăçćăăăăŽăă¤ăžăă¸ă§ăăŹăźăżăźă¨éĺćé˘ć°ăšăăźăăăˇăłă ăă§ăă ăăăăŻă Unpin
ăĺŽčŁ
ăăŚăăăă Drop
ĺŽčŁ
ăăŚăăŞăăă¨ăć示çăŤç¤şăăŚăăăăăăăăăŽăżă¤ăăŽĺ ´ĺă Pin<&mut T>
ăĺĺžăăă¨ă UnpinăžăăŻDropăĺŽčŁ
ăăŚăăŞăăă¨ăăăăŁăŚăăĺżĺăżă¤ăă§ăăăăăĺŽéăŤĺŻĺ¤ĺç
§ăĺĺžăăăă¨ăŻăăăžăăă
ĺ°ćĽăŽăłăłăăăźăżăŽăăăŤăăăăăŽĺżĺĺăŽ1ă¤ăĺŤăć§é ä˝ăăăă¨ăĺéĄăçşçăăžăă Pin<&mut Fuse<Fut>>
ăăPin<&mut Fut>
ăŤç§ťĺăăăŤăŻă ăăăłăăă¸ă§ăŻăˇă§ăłăăĺŽčĄăăĺż
čŚăăă
ăăŽăăăăăłăŽçŞĺşăŻĺŽĺ ¨ă§ăŻăăăžăăă ăăłçăăŽä¸ĺ¤ćĄäťśăŤéĺăăăŤăăłć役ăĺŽčĄăăăŤăŻăĺŽĺŽĺăŽććĄăŤč¨čźăăăăă¤ăăŽăă¨ăćąşăăŚčĄăăŞăăă¨ăäżč¨źăăĺż čŚăăăăžăă
ăăăăŁăŚătl; drďź Drop
ăĺĺ¨ăăăăă Unpin
ăŻĺŽĺ
¨ă§ăăĺż
čŚăăăăžăă ăăăăăăăŻĺ
¨ä˝ăĺ°çĄăăŤăăăăă§ăŻăăăžăăăăăłć役ăunsafe
ăăăăăă¸ă§ăŻăăăăłçăăăăäşşăŻăä¸ĺ¤éăŽăťăăăçśćăăĺż
čŚăăăăă¨ăćĺłăăžăă
ă¸ă§ăăŹăźăżăźă¨éĺćé˘ć°ăšăăźăăăˇăłă ăăăăŻăUnpinăĺŽčŁ ăăŚăăăăDropĺŽčŁ ăćăŁăŚăăŞăăă¨ăć示çăŤç¤şăăŚăăžăăăăăăŁăŚăăăăăŽăżă¤ăăŽĺ ´ĺăPin <ďźmut T>ăĺĺžăăă¨ăĺŽéăŤăŻĺ¤ć´ĺŻč˝ăŞĺç §ăĺĺžăăăă¨ăŻăăăžăăă UnpinăžăăŻDropăĺŽčŁ ăăŚăăŞăăă¨ăăăăŁăŚăăĺżĺăżă¤ăă
éĺćăšăăźăăăˇăłăŤDrop
ĺŽčŁ
ăăăšăă§ăŻăăăžăăăďź éĺćé˘ć°ăŽăăšăżăăŻăăŤăăăăŽďźăăăăăšăăźăăăˇăłăŽăăŁăźăŤăăŤçăăďźăŻăéĺćé˘ć°ăĺŽäşăăăăăŁăłăťăŤăăăă¨ăăŤç ´ćŁăăăĺż
čŚăăăăžăă ăăă¨ăăăăŻĺĽăŽćšćłă§čľˇăăăžăăďź
ç§ăŻăăăŽćčă§éčŚăŞăăŽăć¨ć¸Źăăăă¨ăăŠăăă§ăăimpl Drop for Foo {âŚ}
ă§ăłăźăăĺŽčĄăăăă¨ăŤăŞăăă˘ă¤ăă ăĺĺ¨ăă&mut Foo
äžăă°ä˝żç¨ăăăă¨ăă§ăămem::replace
ăexfiltrateăă¸ă¨ç§ťĺFoo
ĺ¤ă
ăăăŻă ptr::drop_in_place
äťăăŚĺźăłĺşăăă¨ăă§ăăăăăăăă°ăŤăźăă¨ĺăă§ăŻăăăžăăă çšĺŽăŽFoo
ăżă¤ăăŽăăăăă°ăŤăźăŻăĺŽčŁ
ăăăŚăăĺ ´ĺăŻDrop::drop
ĺźăłĺşăă揥ăŤĺăăŁăźăŤăăŽăăăăă°ăŤăźăĺ帰çăŤĺźăłĺşăăžăă ăă ăăăăăăŽĺ帰ĺźăłĺşăăŤăŻ&mut Foo
ĺŤăžăăăă¨ăŻăăăžăăă
ăžăăă¸ă§ăăŹăźăżăźďźăăăăŁăŚéĺćăšăăźăăăˇăłďźăŤăŻăŤăšăżă ăăăăă°ăŤăźăăăăžăăăçžĺ¨ăŽçść ăŤĺşăĽăăŚćŁăăăăŁăźăŤăăťăăăăăăăăăă ăă§ăăăăăăăä¸ăŤăăŁăźăŤăă秝ĺăăŞăăă¨ăç´ćăăžăă
ç§ă使ç¨ăăç¨čŞďźć¨ćşăŻăŞăă¨ćăăžăăďźďźăăăăăă°ăŤăźăăŻăăłăłăă¤ăŠăçćăăăăŁăźăŤăăŽĺ帰çăŚăŠăźăăłă°ă§ăăăăăšăăŠăŻăżăĺźăłĺşăăžăă ăăăăăĺŽčŁ
ăăŻDrop
ăăŹă¤ăăŽĺŽčŁ
ă§ăăăăăăšăăŠăŻăżăăŻăăăăćĽçĺ¤ă¨ăăăăĺŽčŁ
ăŽçľăżĺăăă§ăă ăăăăă°ăŤăźăŻä˝ăĺăăŞăăŽă§ăăăăăăŽĺŽčŁ
ăŽăżăčć
Žăăžăă
ĺ çŠăŤé˘ăăăăăłăłăŽçŤ ăć¸ăăăăŤčŞ°ăăăăăŻăŤăăžăăďź ăăăăăăŤĺžŽĺŚă§ăăăăčăăă¨ăăăăŻäżĄăăăăŞăăťăŠĺż čŚăŞăăă§ăă çšăŤăäžăçšăŤăă°ăŽăă/ćŞăĺŽčŁ ăŽäžă¨ăăăăăŠăŽăăăŤä¸ĺĽĺ ¨ă§ăăăăćăăăŤăŞăă¨ćăăžăă
@Gankro確ăăŤăăăŞăăŻç§ăăăŽăăăŤç˝Žăăă¨ăă§ăăžăă
ăżăŞăăă誏ćăăăă¨ăăăăăžăďź
ç§ăŻĺäşşçăŤéĺćRustă¨PinAPIăŤé常ăŤć ŁăăŚăăžăăăăăăć°ćĽăŻĺ°ăéăă§ăăžăăďźhttps://github.com/rust-lang-nursery/futures-rs/pull/1315-whereéĺćăłăźăăŽéŞéăŞăłăŹăŻăˇă§ăłăŽăăłçăăĺŠç¨ăăăă¨ăăžăăďźă
ĺŽé¨ä¸ăŤăăăăăŽAPIăŤă¤ăăŚăăă¤ăć¸ĺżľăăăăžăăă
impl core::future::future::Future+futures_core::future::FusedFuture
ă§ăŻăăăŹă¤ăstd::marker::Unpin
ăŻstd::marker::Pinned
ăŻĺŽčŁ
ăăăŚăăžăăPin
ăăă¸ă§ăŻăˇă§ăłďźăŤă¤ăăŚĺŚăłă pin-utils
ăăăĄă˝ăăăăłăăźăăăă¨ăăă¨ăĺ°ăć¤ç´˘ăĺż
čŚă§ăăă ăasync
ăĄă˝ăăă¨select
ĺ ´ĺăŤăĺŽéăŤčŞĺăŽĺ°ćĽăăŠăŽăăăŤä˝żç¨ă§ăăžăăă ĺ
çŠăšăżăăŻăŤpin_mut!()
ăăĺż
čŚăăăăă¨ăăăăăžăăă ăăăŻĺŽéăŤăŻăšăżăăŻă§ăŻăŞăăăă桡䚹ăćăăžăădrop()
ćšćłăŻăäťĺăłĺă&mut self
ă䝣ăăăŤPin
ăPin
ă¨Unpin
ĺŽéăŤä˝ă§ăăăăç解ăăĺż
čŚăăăăăă§ăă ăăăŻăăăă¤ăăŽçšĺĽăŞăŚăźăšăąăźăšăŽĺŽčŁ
ăŽčŠłç´°ăĺ°ăćźăăŚăăăăă§ăădrop()
ăĺźăłĺşăăăăžă§ăăžăŁăăĺăă˘ăăŹăšăćă¤ăŞăă¸ă§ăŻăăĺăłčĄ¨ç¤şăăăĺŻč˝ć§ăăăăă¨ă示ăăŚăăžăă ăăăŤăăăçžĺ¨ăŽăšăłăźăă¨'static
éăŽăă税ăŽäťŽćłăŠă¤ăăżă¤ă ăĺžăăăžăă é˘éŁăăŚăăăăăăă§ăĺŽĺ
¨ăŤç°ăŞă2ă¤ăŽćŚĺżľăăăăŽăŻç´ăăăăăăă§ăă 'pinned
ăăăŞăăŽă§ă˘ăăŤĺă§ăăăăŠăăçĺăŤćăăžăăăăłăłăă¤ăŤăăă¨ăăŤăăăăăŽĺéĄăŽăťă¨ăăŠăĺéżăăăC ++ăŤă¤ăăŚăăčăăžăăă秝ĺăłăłăšăăŠăŻăżăźă¨äťŁĺ
ĽćźçŽĺăĺé¤ăăăă¨ă§ăĺă秝ĺä¸ĺŻă¨ĺŽŁč¨ă§ăăžăă ăżă¤ăă秝ĺă§ăăŞăĺ ´ĺăăăŽăżă¤ăăĺŤăăżă¤ăă秝ĺă§ăăžăăă ăăăŤăăăăăăăăŁă¨čŚäťśăŻăä¸é¨ăŽĺźăłĺşăĺ
ă§ăăăăăŁă蝢éăă䝣ăăăŤăĺé幤ăăă¤ăăŁăăŤćľăăăłăłăă¤ăŠăŤăăŁăŚăă§ăăŻăăăžăďźăăšăŚă§ăŻăŞăăăă¨ăă°drop()
ďźă ăăăŻăăŁă¨ç解ăăăăă¨ćăăžăă ăăăă Future
ăŻçžĺ¨ăä˝ăăăăźăŞăłă°ăéĺ§ăăĺăŤç§ťĺăăĺż
čŚăăăăăăRustăŤăŻéŠç¨ă§ăăŞăĺŻč˝ć§ăăăăžăăďź ăăăä¸ćšă§ăăăăŻăăŽçšć§ăćă¤ć°ăăĺŽçžŠăăžăăŻç§ťĺă¨ăăźăŞăłă°ăă§ăźăşăŽĺé˘ă§äżŽćŁă§ăăĺŻč˝ć§ăăăăžăă
Alex Unpin
ăłăĄăłăăŤă¤ăăŚďź Unpin
ćĺłăăăŁăăă¨ç解ăăŚăăžăăăç解ăăăŽăéŁăăăă¨ăŤĺćăăžăă ĺĽăŽĺĺă彚çŤă¤ăăăăăžăăăăäťăŽă¨ăăç°Ąć˝ăŞĺĺăčŚă¤ăăăă¨ăă§ăăžăăă ThingsInsideDontBreakIfObjectGetsMoved
ă DoesntRequireStableAddress
ă PinDoesntMatter
ăŞăŠăŤć˛żăŁăăăŽă
ç§ăăžă ĺŽĺ
¨ăŤç解ăăŚăăŞăăŽăŻă Pin<&mut self>
ăă&mut self
ăĺĺžăăăă¨ăăăăšăŚăŽăżă¤ăă§ĺŽĺ
¨ă§ăăă¨ăŻéăăŞăççąă§ăă PinăăŞăă¸ă§ăŻăčŞä˝ăŽă˘ăăŹăšăĺŽĺŽăăŚăăăă¨ăćĺłăăĺ ´ĺăăăăŻăťă¨ăăŠăŽä¸čŹçăŞRustăżă¤ăăŤĺ˝ăŚăŻăžăăŻăă§ăă PinăŤçľąĺăăăĺĽăŽć¸ĺżľăăăăăă§ăăăăăŻăPinĺ
ăŽčŞĺˇąĺç
§ĺăĺŁăăŞăă¨ăăăă¨ă§ăă Pin
ăćăŁăĺžăŤăăăăćä˝ăăăżă¤ăăŽĺ ´ĺă常ăŤĺŽĺ
¨ă§ăŻăăăžăăă ăăăăăťă¨ăăŠăŽĺ ´ĺăăăăăŻăłăłăă¤ăŠăźăŤăăŁăŚçćăăăă¨ćăăžăăĺŽĺ
¨ă§ăŞăăăžăăŻçăŽăă¤ăłăżăźă§ăăĺéĄăŞăăŻăă§ăă ĺşĺŽăăăĺźăłĺşăăăľăăăŁăźăŤăăŤčť˘éăăĺż
čŚăăăćĺă§ĺ°ćĽăŽăłăłăăăźăżăŽĺ ´ĺăăăăăăăźăŞăłă°ăăĺăŤăăăŁăźăŤăăŤăăłăä˝ćăăăăăŽĺŽĺ
¨ă§ăŞăĺźăłĺşăăćăăăŤĺż
čŚăŤăŞăăžăă ăăăăăăŽĺ ´ĺăĺŽĺ
¨ć§ăŻăăžăŁăăĺéĄă§ăŻăŞăäťăŽăăŁăźăŤăăŤă˘ăŻăťăšăăăăăăĺŽéăŤéčŚăŞĺ ´ćďźăăłăŻăžă ćĺšă§ăăďźďźăŤé˘éŁăăŚăăăă¨ăăăăăžăă
ç§ăćăŁăŚăăăăä¸ă¤ăŽčăăŻăăăă¤ăăŽĺśéăéŠç¨ăăăĺ ´ĺăăăĺç´ăŞăˇăšăă ăĺĺžăăăă¨ăĺŻč˝ăăŠăăă§ăă ăă¨ăă°ăăăłçăăĺż
čŚăŞăăŽăŻéĺćăĄă˝ăăĺ
ă§ăŽăżä˝żç¨ă§ăăĺ°ćĽăŽăłăłăăăźăżă§ăŻä˝żç¨ă§ăăŞăĺ ´ĺă§ăă ăăśăăăăŻçŠäşăPin
ăžăăŻUnpin
ăăăăăŤĺç´ĺăăăă¨ăă§ăăžăă select / joinăăľăăźăăăĺ¤ăăŽăłăźăasync / awaităĄă˝ăăăăłăłăăăźăżăźăŤă¨ăŁăŚćĺŠă§ăăĺŻč˝ć§ăăăăă¨ăčăăă¨ăăăăŻć大ăŽć夹ă§ăŻăŞăĺŻč˝ć§ăăăăžăă ăăăăăăăćŹĺ˝ăŤĺ˝šçŤă¤ăăŠăăăŤă¤ăăŚăŻăĺĺăŤčăăŚăăžăăă
čŻăé˘ďźăăšăżăăŻăăăăźă使ç¨ăăŚasync / awaităłăźăăč¨čż°ă§ăăăă¨ăŻé常ăŤĺŞăăŚăăăé常ăŤĺż čŚă§ăă ăžăăäžľĺ ĽĺăłăŹăŻăˇă§ăłăŞăŠăŽäťăŽăŚăźăšăąăźăšăŤăăłçăă使ç¨ăăćŠč˝ăŻăçľăżčžźăżăˇăšăă ăăŤăźăăŤăŞăŠăŽăżăźă˛ăăă ăă§ăŞăăăăăŠăźăăłăšăŤă彚çŤăĄăžăă ă ăăç§ăŻăăăŤé˘ăă解湺çăćŹĺ˝ăŤćĽ˝ăăżăŤăăŚăăžăă
ĺŽĺŽĺăŹăăźăăŤé˘ăăăă¤ăăźăŞĺéĄďź
fn get_unchecked_mut(self) -> &'a mut T
ăăăŻĺŽéăŤăŻunsafe fn
ă ă¨ćăăžăăďź
@ Matthias247 Tăăăłçă解é¤ăăăŚăăŞăĺ ´ĺă Pin<P<T>>
ăăďźmut TăĺŽĺ
¨ăŤĺĺžăăăă¨ăŻă§ăăžăăăăăăŻăTăăăłăă秝ĺăăăăăŤmem::swap
ăçşçăăĺŻč˝ć§ăăăăăă§ăă
ç§ăčŞĺčŞčşŤăŤčŞŹćăăăŽăŤčŚĺ´ăăŚăăăă¨ăŽ1ă¤ăŻăPinăAPIăŽä¸é¨ă§ăăĺż čŚăăăăŞăŠăFutureăäťăŽçšć§ă¨ć šćŹçăŤç°ăŞăççąă§ăă ă¤ăžăăasync / awaităŤăŻăăłçăăĺż čŚăŞăăă§ăăăăăăŻăăă¨ăă°ă¤ăăŹăźăżă¨ăŻç°ăŞăăFuturesăŤă¤ăăŚĺ ˇä˝çăŤä˝ăăč¨ăŁăŚăăăŽă§ăăăăă
ăăźăŞăłă°ăŻďźmut selfăĺăă Pin<P>
ăżă¤ăăžăăŻUnpină§ăăăżă¤ăăŤĺŻžăăŚăŽăżFutureăĺŽčŁ
ă§ăăžăăďź
PinăăăŠăĄăźăżăźă¨ăăŚĺăĺăăĄă˝ăăăŽĺŻĺ¤ăăŁăźăŤăăŤă˘ăŻăťăšăăăŤăŻăŠăăăă°ăăă§ăăă
ăăăŻĺŽéă Pin
ăŤăăă¤ăăŽćŹ č˝ăăŚăăăĄă˝ăăăăăăăŠăăçĺăŤćăăžăă
impl<'a, T: ?Sized> Pin<&'a T> {
fn map<U: Unpin, F: FnOnce(&T) -> &U>(self, f: F) -> Pin<&'a U>
}
impl<'a, T: ?Sized> Pin<&'a mut T> {
fn map<U: Unpin, F: FnOnce(&mut T) -> &mut U>(self, f: F) -> Pin<&'a mut U>
}
ăăăăŻpin_utils::unsafe_unpinned!
ăăŻăă§ä˝żç¨ă§ăăžăă
ăăŽăăŻăăĺŽĺ
¨ă§ăŞăă¨ä¸ťĺźľăă_ççą_ă解ćăăăă¨ăăŚăăžăă !Unpin
ă§ă Unpin
ăăŁăźăŤăăăăĺ ´ĺăăăŽăăŁăźăŤăăŤć役ăăăŽăŻăŞăĺŽĺ
¨ă§ăŻăŞăăŽă§ăăăăă
ç§ăăăăä¸ĺĽĺ
¨ă§ăăăă¨ăăăăĺŻä¸ăŽçśćłăŻăăŤăšăżă !Unpin
ăżă¤ăăĺŽčŁ
ăăčŞĺˇąăŽUnpin
ăăŁăźăŤăă¸ăŽçăŽăă¤ăłăżăźăĺĺžăăăă¨ă§ăďźăăăŚĺŽĺŽăăă˘ăăŹăšăćăŁăŚăă/ăćăăŚăăăă¨ăŤäžĺăăŚăăžăĺăă¤ăłăšăżăłăšďźă揥ăŤĺăăăŁăźăŤăăŤ&mut
ăĺĺžăăăăăĺ¤é¨é˘ć°ăŤć¸Ąăăžăă ăăăŻă Unpin
ĺŽčŁ
ăĺŽĺ
¨ă§ăăççąă¨ĺăççąăŤčŠ˛ĺ˝ăăăăă§ăăă !Unpin
ăăŁăźăŤăă¸ăŽçăŽăă¤ăłăżăźăĺĺžăăăă¨ă§ăĺŽĺ
¨ăŞăăŽăŽä¸é¨ăĺźăłĺşăăă¨ăă§ăăŞăăăăŤăŞăăă˘ăŚăăăŚăăžăă APIă
ĺăŽçśćłăăăĺŽĺ
¨ăŤăăăăăŤăé常ăŻć§é ä˝ăŽUnpin
ăăŁăźăŤăăPinned
čż˝ĺ ăăăŽă§ăŻăŞăăĺŽéăŤăŻ!Unpin
ă§ăăăăźăăłă°ç¨ăŤă Pinned
ä¸ăŤăŠăăăźăć§çŻăăăă¨ăă§ăăžăăĺ
¨ä˝ă¨ăăŚăŽć§é ä˝ă¸ăŽPinned
ďź
pub struct MustPin<T: Unpin>(T, Pinned);
impl<T: Unpin> MustPin<T> {
pub const fn new(t: T) -> Self { ... }
pub fn get(self: Pin<&Self>) -> *const T { ... }
pub fn get_mut(self: Pin<&mut Self>) -> *mut T { ... }
}
ăăăŻăăšăŚăçžĺ¨ăŽAPIă¨ä¸ä˝äşćć§ăăăăăăŤčŚăăžăăăăăŤăăă futures-rs
ăłăłăăăźăżăăăăă¤ăăŽĺŽĺ
¨ć§ă夹ăăăĺŻč˝ć§ăăăăžăďźăă¨ăă°ăăăŽăăăŞčż˝ĺ ăŽăăŁăźăŤăăŤĺŽĺ
¨ăŤă˘ăŻăťăšă§ăă!Unpin
ăżă¤ăďźäžľĺ
ĽĺăłăŹăŻăˇă§ăłăŞăŠďźăĺŽčŁ
ăăăăăŤăăăŽăăăŞăăă¤ăăŽAPIă芌ăăŚăĺžă§čż˝ĺ ăăăă¨ăă§ăăžăă
ç§ăŻĺŻč˝ć§ăăăăăNemo157 @ăăăăŽăăăćŠč˝ăŻăĺŽĺ
¨ă§ăŻăŞămem::swap
ăŤ&mut T
ćŠč˝ćťăĺăŤç§ă渥ă&mut U
ă ďźĺŻĺ¤ăŽăăŽăŻăä¸ĺ¤ăŽăăŽăŻĺŽĺ
¨ă§ăŻăŞăăăăăăžăăďź
硨éďźpin-utilsăăŻăăç°ăŞăăžăă unsafe_unpinned
ăŻăżăźă˛ăăăżă¤ăăUnpin
ă§ăăĺż
čŚăŻăŞăăĺăŞăăĺşĺŽăăăŚăăŞăć役ăăă¤ăžă&mut Field
ă¸ăŽć役ă§ăă !Unpin
ă§ăăŁăŚăăăăă¸ă§ăŻăăăăŽăăŁăźăŤăăŤĺşĺŽăăŞăéăăĺŽĺ
¨ăŤä˝żç¨ă§ăăžăă
ç§ăčŞĺčŞčşŤăŤčŞŹćăăăŽăŤčŚĺ´ăăŚăăăă¨ăŽ1ă¤ăŻăPinăAPIăŽä¸é¨ă§ăăĺż čŚăăăăŞăŠăFutureăäťăŽçšć§ă¨ć šćŹçăŤç°ăŞăççąă§ăă ă¤ăžăăasync / awaităŤăŻăăłçăăĺż čŚăŞăăă§ăăăăăăŻăăă¨ăă°ă¤ăăŹăźăżă¨ăŻç°ăŞăăFuturesăŤă¤ăăŚĺ ˇä˝çăŤä˝ăăč¨ăŁăŚăăăŽă§ăăăăă
çčŤçăŞéăăŻăăăžăăăăĺŽç¨çăŞéăăŻăăăžăă 1ă¤ăŻă Iterator
ăĺŽĺŽăăŚăăăă¨ă§ăă ăăăăçľćă¨ăăŚăé常ăŤĺˇ§ĺŚăŞăăŽăčŚă¤ăăŞăéăăäşééćĽĺç
§ăŞăă§čŞĺˇąĺç
§ă¸ă§ăăŹăźăżăźăŤĺŻžăăŚfor
ăŤăźăăĺŽčĄăăăă¨ăŻă§ăăžăăăăă ăăăăăăŞăăŚăĺŽĺ
¨ăŤĺŽĺ
¨ă§ăăăŻăă§ăďź forăŤăźăăŻă¸ă§ăăŹăźăżăźăćśč˛ťăă秝ĺăăŞăăăďźă
ăă1ă¤ăŽéčŚăŞĺŽç¨çăŞéăăŻă Iterator
ă¨Future
éăŽăłăźăăăżăźăłăăžăŁăăç°ăŞăăă¨ă§ăă ĺ
çŠăŽĺž
ćŠăă¤ăłăăčśăăŚĺăăăăŞăă¨10ĺčĄăăă¨ăŻă§ăăžăăăăăŽăăăĺ
çŠ0.1ă§ăŻăăăăăŽArc
ăăăă¨ăăăŤčĄ¨ç¤şăăăăăă2ă¤ăŽç°ăŞăĺ¤ć°ă§ĺăĺ¤ć°ă使ç¨ă§ăăžăă and_then
ĺźăłĺşăă ăăăăćă
ăŻăăšăŚăŽčŞĺˇąĺç
§ă¤ăăŹăźăżă襨çžă§ăăăŤăăŞăé ăĺžăŚăăăăăă ăă§ăăŚăźăšăąăźăšăŽéčŚă§ăŻăăăžăăă
ç§ăŻĺŻč˝ć§ăăăăăăăăăăŽăăăćŠč˝ăŻăĺŽĺ ¨ă§ăŻăŞă
mem::swap
ăŤ&mut T
é˘ć°ăčżăĺăŤç§ă渥ă&mut U
ăăăăăăźăăăăŽăăŽé¨ĺăĺżăăďźăăăăŁé˘ďź
fn as_mut(&mut self) -> Pin<&mut P::Target>
fn into_refďźselfďź->ăăł<ďź 'a T> `
ĺŽéăŤĺç
§ăčżăăĄă˝ăăă¨ćˇˇĺăăŞăăăăŤăăăăăas_pinned_mut
ăăăłinto_pinned_ref
ă¨ĺźăśĺż
čŚăăăăžăăďź
stdă§ăŽUnpinăŽćł¨çŽăăšăĺŽčŁ ďź
impl<P> Unpin for Pin<P> {}
ăžăăç§ăăĄă使ç¨ăăăżă¤ăăŽĺ ´ĺăăăăŻĺšćăăŞăăĺ°ăĺŽĺ
¨ăŤčŚăăžăăďź
ć°ăŤăăŞăă§ăă ăăăăăŞăăŻăăŞăăŽăŞăšăăŤăăăćăŁăŚăăžăă ;ďź
ĺŽĺŽĺăăĺăŤDrop
äżč¨źăććĺăăĺż
čŚăăăă¨ćăăžăăăăăăŞăă¨ăćé
ăăŤăŞăăžăă
ăŞăă¸ă§ăŻăă§
drop
ăĺźăłĺşăăăŤăĺşĺŽăăăăŞăă¸ă§ăŻăďźPin
ĺç §ăŽăżăźă˛ăăďźăŽăšăăŹăźă¸ăçĄĺšăŤăăăă¨ăŻéćłă§ăă
ăăă§ăŽăçĄĺšĺăăŻăĺ˛ăĺ˝ăŚč§Łé¤ăăćĺłăăĺ ´ĺăăăăžăăăă蝢ç¨ăăćĺłăăžăă x
ăOk(foo)
ăăErr(bar)
ăŤĺ¤ć´ăăă¨ă foo
ăŽăšăăŹăźă¸ăçĄĺšăŤăŞăăžăă ă
ăăăŤăăăăă¨ăă°ăćĺăŤdrop::<T>
ĺźăłĺşăăăŤă Pin<Box<T>>
ă Pin<Rc<T>>
ăžăăŻPin<Arc<T>>
ĺ˛ăĺ˝ăŚă解é¤ăăăă¨ăéćłăŤăŞăăžăă
Deref
ă DerefMut
蝢ç¨ăăăDeref
çšć§ăăăăăŻăšăăźăăă¤ăłăżăăćĺłăăăăăŤĺĺŠç¨ăăćšćłăŤă¤ăăŚăç§ăŻăžă ĺ°ăä¸ĺŽăćăăŚăăžăă Deref
ăŻăăçśćżăăŞăŠăŽäťăŽçŽçăŤă使ç¨ăăžăă ăăăŻă˘ăłăăăżăźăłăăăăăžăăăăăăă§ăăăŞăä¸čŹçăŤä˝żç¨ăăăŚăăăçç´ăŤč¨ăŁăŚăăăăŻäžżĺŠă§ăă ďźD
ăăăăăăăŻĺĽĺ ¨ć§ăŽĺéĄă§ăŻăŞăă¨ćăăžăă
Unpin
ç解ăăćĽçĽăăăŞăăŠă°ă¤ăłďźç§ăŻăăăŤă¤ăăŚ2ă¤ăŽăăă°ć稿ăć¸ăăžăăăăăăŻăďźĺďźćŁĺźăŞć§ćăčŞăăă¨ăăŠăă ă漽ăăă§ăăăăŤăăŁăŚă彚çŤă¤ăăŠăăăŤăăŁăŚç°ăŞăăžăă ;ďźAPIăŻăăŽĺžĺ¤ć´ăăăžăăăăĺşćŹçăŞčăćšăŻĺ¤ć´ăăăŚăăžăăă
@ Matthias247ăăŞăăç´é˘ăăŚăăĺéĄăŽ1ă¤ăŻăçžĺ¨ăăăłçăăäź´ăć˝čąĄĺăć§çŻăăăŤăŻăăťă¨ăăŠăŽĺ ´ĺăĺŽĺ ¨ă§ăŞăăłăźăăĺż čŚăŤăŞăăă¨ă ă¨ćăăžăă ăăăăŽć˝čąĄĺă使ç¨ăăăă¨ăŻĺéĄăăăžăăăăăă¨ăă°ăĺŽĺ ¨ăŞăłăźăă§ĺ°ćĽăŽăłăłăăăźăżăĺŽçžŠăăăă¨ăŻćŠč˝ăăžăăă ăăăŻăăăăłăăă¸ă§ăŻăˇă§ăłăăŤăŻăăłăłăă¤ăŠăŽĺ¤ć´ăŤăăŁăŚăŽăżĺŽĺ ¨ăŤç˘şčŞă§ăăĺśç´ăăăăăă§ăă ăă¨ăă°ăăăŞăăŻĺ°ăăžă
dropďźďźăĄă˝ăăăPină§ăŻăŞăďźmutselfăĺăĺăăŽăŻăŞăă§ăăă
ăăă¨ă drop()
ăŻĺ¤ăă§ă-Rust 1.0ăăĺĺ¨ăăŚăăžă-ăŞăŽă§ăĺ¤ć´ăăăă¨ăŻă§ăăžăăă Pin<&mut Self>
ă ăăăăăăăŤăăăă¨ćăăžăăăăăăă°ă Unpin
ăżă¤ăăŻăçžĺ¨ăŽăăăŤ&mut
ĺĺžă§ăăžăăăăăăŻä¸ä˝äşćć§ăŽăŞăĺ¤ć´ă§ăă
ĺ°ćĽăŽăłăłăăăźăżăĺŽĺ
¨ăŤä˝ćăăăŤăŻăĺŽĺ
¨ăŞăăłăăă¸ă§ăŻăˇă§ăłăĺż
čŚă§ăăăăŽăăăŤăŻăăłăłăă¤ăŠăĺ¤ć´ăăĺż
čŚăăăăžăăăăăŻăăŠă¤ăăŠăŞă§ăŻĺŽčĄă§ăăžăăă ăăăŽăżă¤ăăŤăŻDrop
ăžăăŻUnpin
ĺŽčŁ
ăăŞăăă¨ă˘ăľăźăăăćšćłăĺż
čŚăŤăŞăăă¨ăé¤ăăŚă derive
proc_macroă§ăťăźĺŽčĄă§ăăžăă
ăăłăăă¸ă§ăŻăˇă§ăłç¨ăŽăăŽăăăŞĺŽĺ
¨ăŞAPIăĺĺžăăćšćłăç解ăăăă¨ăŻĺŞĺăă䞥ĺ¤ăăăă¨ćăăžăă ăă ăăĺŽĺŽĺăăăăăŻăăĺż
čŚăŻăăăžăăăăăă§ĺŽĺŽĺăăAPIăŻăĺŽĺ
¨ăŞăăłăŽć役ă¨ä¸ä˝äşćć§ăăăĺż
čŚăăăăžăă ďź Unpin
ăŻăä¸č¨ăŽă˘ăľăźăˇă§ăłăĺŽčŁ
ăăăăăŤlangă˘ă¤ăă ăŤăŞăĺż
čŚăăăăăăăăžăăăăăăăťăŠćŞăăŻăŞăăăă§ăăďź
ăăăăŽĺéĄăŽăťă¨ăăŠăĺéżăăăC ++ăŤă¤ăăŚăăčăăžăăă秝ĺăłăłăšăăŠăŻăżăźă¨äťŁĺ ĽćźçŽĺăĺé¤ăăăă¨ă§ăĺă秝ĺä¸ĺŻă¨ĺŽŁč¨ă§ăăžăă ăżă¤ăă秝ĺă§ăăŞăĺ ´ĺăăăŽăżă¤ăăĺŤăăżă¤ăă秝ĺă§ăăžăăă
RustăŽç§ťĺä¸ĺŻč˝ăŞăżă¤ăăĺŽçžŠăă芌ăżăăăă¤ăăăăžăăă ăăăŻé常ăŤăăăŤč¤éăŤăŞăăžăă
ç解ăăŚăăăšăéčŚăŞăă¨ăŽ1ă¤ăŻăăăłçăăŤăăŁăŚç§ťĺă§ăăŞăăżă¤ăăćäžăăăŞăăă¨ă§ăă Rustă§ăŻăăšăŚăŽăżă¤ăă秝ĺĺŻââč˝ăŞăžăžă§ăă T
ăăăĺ ´ĺăŻă弽ăăŞĺ ´ćăŤç§ťĺă§ăăžăă 秝ĺă§ăăŞăĺăŽäťŁăăăŤă秝ĺă§ăăŞăăă¤ăłăżăźĺăĺŽçžŠăăăăăć°ăăăŤăăťăŤĺăăăAPIăĺŽçžŠăăRustăŽćŠč˝ăĺŠç¨Pin<&mut T>
ďźăŤăăăăă¤ăłăżďź T
ďźăŤăŻăăăžăăă ăżă¤ăăăç§ăŻäťăžă§ĺăăăŞăăă¨č¨ăćšćłăŻăăăžăăă ăăăăăżă¤ăăăç§ăŻăăłć˘ăăŚăăžăŁăĺ ´ĺăŻăĺăłç§ă秝ĺăăŞăă§ăă ăăăă¨č¨ăăăăŽćšćłăăăăžăă ăăăăŁăŚăç§ăććăăMyFuture
ăŻĺ¸¸ăŤç§ťĺĺŻč˝ă§ăăă Pin<&mut MyFuture>
ăŻăăă䝼ä¸ç§ťĺă§ăăŞăMyFuture
ă¤ăłăšăżăłăšă¸ăŽăă¤ăłăżăźă§ăă
ăăăŻĺžŽĺŚăŞçšă§ăăăăăŽé常ăŤä¸čŹçăŞčŞ¤č§ŁăéżăăăăăŤăăăă§ăăăĽăĄăłăăĺ ˇä˝ĺăăăăăŤćéă貝ăăĺż čŚăăăăžăă
ăăăăčŞĺˇąĺç §ă¤ăăŹăźăżăăžăŁăă襨çžă§ăăăŤăăŞăé ăăžă§ĺ°éăăžăăăăŚăźăšăąăźăšăŤă¨ăŁăŚăăăťăŠéčŚă§ăŻăăăžăăă
ăăăŻăăăăžă§ăŽă¨ăăăăăšăŚăŽă¤ăăŹăźăżăĺă¨impl Iterator for âŚ
ăăăăŻă使ç¨ăăŚĺŽçžŠăăăŚăăăăă§ăă 2ă¤ăŽĺ垊ăŽéăŤçść
ăäżćăăĺż
čŚăăăĺ ´ĺăă¤ăăŹăźăżăżă¤ăăŽăăŁăźăŤăăŤçść
ăć źç´ăă &mut self
䝼ĺ¤ăŤé¸ćč˘ăŻăăăžăăă
ăă ăăăăăč¨čŞăŤă¸ă§ăăŹăźăżăźăĺŤăă丝ăŞĺćŠă§ăŻăŞăĺ ´ĺă§ăăćçľçăŤă¸ă§ăăŹăźăżăźyield
ć§ćă使ç¨ăăŚă for
ă§ä˝żç¨ă§ăăăăŽăĺŽçžŠă§ăăăăăŤăŞăă¨é常ăŤäžżĺŠă§ăă yield
ĺ
¨ä˝ă§ĺç¨ăăžăăăăăŻăă¸ă§ăăŹăźăżăź-ă¤ăăŹăźăżăźăŤă¨ăŁăŚăă¸ă§ăăŹăźăżăź-ăăĽăźăăŁăźăŤă¨ăŁăŚăéčŚă ăăă§ăă
ďź
Unpin
ăŻăä¸č¨ăŽă˘ăľăźăˇă§ăłăĺŽčŁ ăăăăăŤlangă˘ă¤ăă ăŤăŞăĺż čŚăăăăăăăăžăăăăăăăťăŠćŞăăŻăŞăăăă§ăăďź
Unpin
ă¨Pin
ăŻăĺŽĺ
¨ăŞä¸ĺăŽă¸ă§ăăŹăźăżăźăăľăăźăăăăăăŤăăă§ăŤlangă˘ă¤ăă ă§ăăĺż
čŚăăăăžăă
ăăšăŚăŽčŞŹćăŤćčŹăăžăďź ç§ăŻ@GankroăŤĺćăăžăă Pin
ăŞăŠăŤé˘ăăăăăłăłăšăżă¤ăŤăŽçŤ ăăăă§é常ăŤĺ˝šçŤă¤ă§ăăăă ăŞăăăžăăžăŞĺŽĺ
¨ăŞćšćłăĺĺ¨ăăăŽăăăŞăĺŽĺ
¨ă§ăŞăćšćłăĺŽĺ
¨ă§ăŞăăŽăăŞăŠăĺ¤ăăŽéçşĺąĽć´ăăăăŽă§ăŻăŞăăă¨ćăăžăă
ăăăç解ăăăăăăăăăŤăĺé˘ć°ăĺŽĺ
¨ă§ăăççąăăžăăŻunsafe
ççąăć¸ăçăăŚăżăăăŁăăŽă§ăăă ä¸ăăăŽç解ă§ăç§ăŻäťĽä¸ăŽăăšăŚăćăŁăŚăăžăăăăăĄăăĄăŤăăă¤ăăŽčłŞĺăăăăžăă äťăŽäşşăç§ăăăăč¨ĺ
ĽăăăŽăćäźăŁăŚăăăăŞăăăăăŻç´ ć´ăăăăă¨ă§ăďź ďźăžăăŻç§ăŽčăăééăŁăŚăăĺ ´ćăććăăăŽăŤĺ˝šçŤăĄăžăďź
fn new(P) -> Pin<P> where P: Deref, P::Target: Unpin
Pin<P>
ăć§çŻăăăăăŽĺŽĺ
¨ăŞćšćłă§ăăăPin<P>
ăŻé常ă P::Target
ăă§äşĺşŚă¨ç§ťĺăăăŞăăă¨ăćĺłăăžăP::Target
ăŻUnpin
ăĺŽčŁ
ăăžăăăăăŻăPin
ăŻăăäżćăăăžăăăăăăŽçľćăăăă§ăŽĺŽĺ
¨ć§ăŻăunsafe fn new_unchecked(P) -> Pin<P> where P: Deref
P
ăŻăăă§ăŻăŞăăăăăăŽé˘ć°ăŻunsafe
ă§ăăUnpin
ĺŽčŁ
ăăăăă Pin<P>
ăŻćŹĄăŽäżč¨źăçśćăăĺż
čŚăăăăžăăP::Target
Pin<P>
ăä˝ćăăăĺžă P::Target
ăŻäşĺşŚă¨ç§ťĺăăžăăăăăŽé˘ć°ăĺŽĺ
¨ă§ăăĺ ´ĺăăăŽäżč¨źăŤéĺăăç°ĄĺăŞćšćłăŻă
ăć°ăŤĺ
Ľăďź
fn foo<T>(mut a: T, b: T) {
Pin::new_unchecked(&mut a); // should mean `a` can never move again
let a2 = mem::replace(&mut a, b);
// the address of `a` changed to `a2`'s stack slot
}
ăăăăŁăŚă Pin<P>
ĺŽéăŤćĺłăăăă¨ăäżč¨źăăăŽăŻăŚăźăśăźćŹĄçŹŹă§ă
P::Target
ăŻĺťşč¨ĺžăŤĺăłç§ťĺăăăăă¨ăŻăŞăăŽă§ă unsafe
ă§ăďź
fn as_ref(&Pin<P>) -> Pin<&P::Target> where P: Deref
Pin<P>
ä¸ăăăăă¨ă P::Target
ăćąşăăŚĺăăŞăăă¨ăäżč¨źăăăžăă ăăăŻPin
ăŽĺĽç´ăŽä¸é¨ă çľćă¨ăăŚăăăăŻäşç´°ăŞăă¨ăćĺłăăžă&P::Target
ă P::Target
ă¸ăŽĺĽăŽăăšăăźăăă¤ăłăżăăŻĺăăăŽăćäžăăžă&Pin<P>
ăŻĺŽĺ
¨ăŤPin<&P::Target>
ăŤĺ¤ćă§ăăžăăăăăŻă Pin<SmartPointer<T>>
ăăPin<&T>
ăŤç§ťĺăăä¸čŹçăŞćšćłă§ăă
fn as_mut(&mut Pin<P>) -> Pin<&mut P::Target> where P: DerefMut
as_ref
ă¨ăťăźĺăă ă¨ćăăžăăPin
ă ăăŞăŽă§ăç°ĄĺăŤă§ăăăăŽăŻăăăžăăă質ĺďźăćŞćăŽăăă DerefMut
implăŻăŠăă§ăăďź ăăăŻĺŽĺ
¨ăŞćšćłă§ă
&mut P::Target
ăă¤ăăŁăăŤăŻăŹăźăăăăŚăźăśăźćäžăŽDerefMut
ăĺźăłĺşăăŤăŻă
ăăăăăăăăăăĺ¤ć´ăăăă¨ă訹ĺŻăăžăă ăăăŻăŠăŽăăăŤĺŽĺ
¨ă§ăăďź
fn set(&mut Pin<P>, P::Target); where P: DerefMut
Pin<P>
ďźăăăŚç§ăăĄăä˝ăçĽăăŞăă¨ăăäşĺŽďźăčăăă¨Unpin
ďźăăăăŻP::Target
ćąşăăŚĺăăŞăăă¨ăäżč¨źăăăšăă§ăŻăăăžăăăďź ă§ăăă°P::Target
ă§ĺĺćĺăăăŽăŻĺŽĺ
¨ă§ăŻăŞăă§ăăăăďźunsafe fn map_unchecked<U, FnOnce(&T) -> &U>(Pin<&'a T>, f: F) -> Pin<&'a U>
unsafe
é˘ć°ăŞăŽă§ăăăă§ăŽä¸ťăŞčłŞĺăŻăăŞăăăă§ăŻăŞăăŽăăă§ăă..ă
質ĺ::ăăă§ăŽĺäžăŻä˝ă§ăăďź ăăăĺŽĺ
¨ă ăŁăĺ ´ĺăä˝ă§ăă
Pin
ăŽäżč¨źăŤéĺăăŚăăăă¨ă示ăäžďź
fn get_ref(Pin<&'a T>) -> &'a T
Pin<&T>
ăŽäżč¨źăŻă T
ăćąşăăŚĺăăŞăăă¨ăćĺłăăžăă &T
čżăT
ăŻč¨ąĺŻăăăŚăăŞăăăăćŻćăăŞăăĺŽĺ
¨ăŤčĄăĺż
čŚăăăăžăăăă§ăŽăăăśăč˝ă¨ă犴ăăŽ1ă¤ăŻăĺ
é¨ăŽĺŻĺ¤ć§ă§ăă T
ă
RefCell<MyType>
ďź ăă ăăăăăŻăŽäżč¨źăŤéĺăăžăă
Pin<&T>
äżč¨źăŻă T
ĺ
¨ä˝ăŤăŽăżéŠç¨ăăă
ĺ
é¨ăăŁăźăŤăMyType
ă ĺ
é¨ăŽĺŻĺ¤ć§ăŻĺăĺăăă¨ăă§ăăžăă
ĺ
é¨ă§ăŻăăăă§ăĺşćŹçăŤć§é ĺ
¨ä˝ăčĺžăŤç§ťĺăăăă¨ăŻă§ăăžăă
&
ĺç
§ă
fn into_ref(Pin<&'a mut T>) -> Pin<&'a T>
Pin<&mut T>
ăŻă T
ă秝ĺăăŞăăă¨ăćĺłăăžăă çľćă¨ăăŚăăăăŻPin<&T>
ćĺłăăžăunsafe fn get_unchecked_mut(Pin<&'a mut T>) -> &'a mut T
Pin<&mut T>
ăŻă T
ă秝ĺăăŚăŻăŞăăŞăăă¨ăćĺłăăăăăăăăŻç°ĄĺăŤunsafe
mem::replace
ăăŚă T
ďźĺŽĺ
¨ăŤďźç§ťĺă§ăăăăă§ăă ăśăťunsafe
ăă㍠" &mut T
ă塎ăä¸ăăžăăă訹ĺŻăăăŚăăžăăT
"ă秝ĺăăžăăunsafe fn map_unchecked_mut<U, F: FnOnce(&mut T) -> &mut U>(Pin<&'a mut T>, f: F) -> Pin<&'a mut U>
unsafe
ăŻĺşćŹçăŤĺ°ăŞăă¨ăä¸č¨ă¨ĺăă ă¨ćăăžăă&mut T
ĺŽĺ
¨ăŤé
ĺ¸ăăďźĺŽĺ
¨ă§ăŞăééăčŚćąăăăă¨ăŻă§ăăžăăďźmem::replace
ç°ĄĺăŤä˝żç¨ă§ăăžăă ăăăŤăăăăăäťăŽĺąéşăăăăžăfn get_mut(Pin<&'a mut T>) -> &'a mut T where T: Unpin
Unpin
ĺŽčŁ
ăăăă¨ăŤăăăăżă¤ăăŻă Pin<&mut T>
ăŤăŻäżč¨źăăŞăăăăăŻ&mut T
"ăŽăăĽăźăżă¤ăăŠăăăźă ăă§ăăăăŽçľćă&mut T
čżăăă¨ăă§ăăžăimpl<P: Deref> Deref for Pin<P> { type Target = P::Target }
as_ref
ĺžăŤget_ref
ăă¨ă§ĺŽĺ
¨ăŤĺŽčŁ
ă§ăăăăăimpl<P: DerefMut> DerefMut for Pin<P> where T::Target: Unpin { }
as_mut
ĺžăŤget_mut
çśăăăă¨ă§ĺŽĺ
¨ăŤĺŽčŁ
ă§ăăăăăimpl<T: ?Sized> Unpin for Box<T>
ďźăăăłăăŽäťăŽăă¤ăłăżăźé˘éŁăŽĺŽčŁ
ďź
Box<T>
ăŻUnpin
ăăŹă¤ăăĺŽčŁ
ăăžăT
ăUnpin
ĺŽčŁ
ăăĺ ´ĺăŽăżă ăăă§ăŽăăŽĺŽčŁ
ăŻăT
ć示çăŤUnpin
ĺŽčŁ
ăăŚăăŞăĺ ´ĺă Box<T>
ăŻUnpin
ĺŽčŁ
ăăžăă質ĺďźăăăć šćŹçăŤĺăä¸ăăŚăăăă¨ăŽäžăŻä˝ă§ăăďź
ăă¨ăă°ăăăŽimplăăŞăăă°ăĺŽĺ
¨ăŞăăŽăŤăŻunsafe
ĺż
čŚăŤăŞăăžăă
ĺĺ¨ăăŞăăŁăă
@ Matthias247ăăłăăďźmutTăĺŽĺ ¨ăŤĺĺžăăăă¨ăŻă§ăăžăă
> Tăăăłč§Łé¤ăăăŚăăŞăĺ ´ĺăŻămem :: swapă使ç¨ăăŚTăăăłăă秝ĺă§ăăžăăăăăŤăăăăăłçăăŽçŽçăçĄĺšăŤăŞăăžăă
ăăăă¨ăďź ăŻăă swap
ăŻĺŽĺ
¨ă§ăŞăćšćłă§ăŻăŞăăăăăăăŻćăăăŤĺéĄăăăăžăă ăăăăăăăŻčż˝ĺ ăăăă¨ăŤăăŁăŚäżŽćŁăăăĺŻč˝ć§ăUnpin
ăŤăă¤ăłăswap()
ďź ăăăžă§ăŽăăšăŚăŽăłăźăăŻUnpin
ăăă¨ăŤăăĺŽĺ
¨ă§ăŻăŞăăăăăăă§ĺéĄăçşçăăăă¨ăŻăăăžăăă
ăžă ç§ăćă桡䚹ăăăŚăăăă¨ăŽ1ă¤ăŻă Pin<T>
č¤ć°ăŽäżč¨źăććĺăăŚăăăă¨ă ă¨ćăăžăďźTăŽă˘ăăŹăšăĺŽĺŽăăŚăăăă¨ăăăăłăăŽĺ
é¨çść
ăŤé˘ăăăăă¤ăăŽäżč¨źďźä¸é¨ă§ăŻĺçľ/ä¸ĺ¤ăŽăăăŞăăŽă§ăďźçśćłă ăă§ăŞăăĺŽéăŤăŻăăă§ăŻăăăžăăďźă
ĺŽĺ
¨ă§ăŞăăłăźă/ăăă¸ă§ăŻăˇă§ăłăăăăăŤPin
ăăźăšăŽĺźăłĺşăăĺż
čŚăŞĺ ´ćďźăă¨ăă°ăăăŁăźăŤăăŽpoll
ďźăŤăŽăżç§ťĺăăćšăăĺŽĺ
¨ă§ăŞăăăă¸ă§ăŻăˇă§ăłăĺŚçăăăăăćăžăăăăăŤćăăžăăăăăšăŚăŽĺ ´ĺă ăă ăăăăăŤăŻĺĽăŽĺéĄăăăăă¨ăŤăć°ăĽăăžăăăĺŻĺ¤ĺç
§ăŤă˘ăŻăťăšă§ăăăłăźăăŻăăŁăźăŤăăčŞçąăŤç§ťĺă§ăă drop()
ăăăŽăăŁăźăŤăă§ĺŽĺ
¨ăŤĺźăłĺşăăăă¨ă揥ăŽççąă§ç ´ćăăĺŻč˝ć§ăăăăžăăĺĽăŽĺ ´ćăŤäżĺăăăŚăăă˘ăăŹăšă ăăŽăăăŤăŻă芹ăĺăăădrop(Pin<T>)
ăŞăźăăźăăźăăĺż
čŚăŤăŞăăžăă
@RalfJung誏ćăăăă¨ăăăăăžăďź ç§ăŻç˘şăăŤä¸čŹçăŤĺąéşăŞăă¨ăăăăă¨ăăă¨ăăäşĺŽăŤĺćăăžăăăăăăŁăŚăç§ăŤčż˝ĺ ăŽç解ăčŚćąăăăă¨ăŻĺéĄăŞăăŻăă§ăă ç§ăŻăăăä¸čŹçăŤĺŽĺ
¨ăŞĺ°ćĽăŽăłăłăăăźăżăć¸ăăăă¨ćăŁăŚăăäşşă
ăŤă¤ăăŚăăŁă¨ĺżé
ăăŚăăžăăăäťă§ăŻăăăăăšăŚăŽç¨čŞăŤç´é˘ăăăăăăăžăăă Unpin
ă¨ăăłăăă¸ă§ăŻăˇă§ăłăăžăŁăăç解ăăăŤăłăłăăăźăżăč¨čż°ă§ăăďź Unpin
ĺ
çŠă§ăŽăżďźćŠč˝ăĺśéăăăăłăłăăăźăżăŽăżăĺĺžă§ăăĺ ´ĺăŻăăăăćăžăăă¨ćăăăžăă ç§ăŻăăă芌ăăăă¨ăăŞăăŽă§ăăăăçžĺ¨ăăă§ăăăăŠăăăŻč¨ăăžăăă ĺ°ăŞăă¨ăUnpin
ĺ˘çăćĺă§čż˝ĺ ăăĺż
čŚăăăă¨ćăăžăă
ăžăăĺăăăŞăăżă¤ăă¨ăăłăżă¤ăăéăăă¨ăç解ăăŚăăžăă ăăăăç§ăŻçžĺ¨ăéăăăăăŚăźăšăąăźăšăŤçŚçšăĺ˝ăŚăŚăăžăă ăžăăç ŠăăăăłăŹăŻăˇă§ăłăŽăŚăźăšăąăźăšă§ăŻă秝ĺä¸ĺŻč˝ăŞăżă¤ăăŻăăăžăč¤éăŤăăăă¨ăŞăé常ăŤăăžăćŠč˝ăăžăă ĺ çŠăŤă¤ăăŚăŻă秝ĺĺŻč˝ăŞăżă¤ăăă秝ĺä¸ĺŻč˝ăŞăżă¤ăă¸ăŽéăćŹ ăăŚăăăăăćăăăŤăăă¤ăăŽčŞżćťăĺż čŚăŤăŞăăžăă ăăŽćšćłăPinAPIăăăäşşé塼ĺŚçă§ăŞăĺ ´ĺăĺĺŠăăăăžăăă
T: Unpin
ămem::swap
čż˝ĺ ăăă¨ăăăłĺ
ăŤăŞăĺ ´ĺă§ăçšĺŽăŽăżă¤ăă§ä˝żç¨ă§ăăŞăăŞăăžăă
ăăăăswapďźďźăŤăă¤ăłăăăăUnpinăčż˝ĺ ăăăă¨ă§äżŽćŁă§ăăžăăďź ăăăžă§ăŽăăšăŚăŽăłăźăăŻăăłçăă解é¤ăăăăă¨ăŤăăĺŽĺ ¨ă§ăŻăŞăăăăăăă§ĺéĄăçşçăăăă¨ăŻăăăžăăă
ăăăŻăăăšăŚăŽćąç¨ăłăźăăç ´ăďźăăă¤ăăŽăăăŤăăŞăăäťćĽăŽĺŽĺŽăăăăłă§é˘ć°ăč¨čż°ăăĺ ´ĺăŻT
ĺśç´ăĺăăăă¨ăŞăăăăŞăăĺźăłĺşăăă¨ăă§ăăžăswap
ăăăŤă ăăăŻćŠč˝ăçśăăĺż
čŚăăăăžăă
秝ĺä¸ĺŻč˝ăŞăżă¤ăăŻăăăžăč¤éăŤăăăă¨ăŞăé常ăŤăăžăćŠč˝ăăžăă
ăăă§ĺŽĺŽĺăŽăăăŤććĄăăăŚăăăăŽăĺ¤§ĺš ăŤčś ăăč¤éăăŞăăŤăĺžćšäşćć§ăŽăăćšćłă§Rusthttpsďź//github.com/rust-lang/rfcs/pull/1858ăĺç §ăăŚ
https://github.com/rust-lang/rfcs/pull/2349ăŽRFCă¨ăăăăăĺ§ăžăăăźăăŽăăă°ăˇăŞăźăşăŻăć¤č¨ăăăäťăŽč¨č¨ăŽčćŻă¨ĺ°čąĄăä¸ăăăŽăŤĺ˝šçŤă¤ăŻăă§ăă ďźćĽäťăŤă注ćăăŚăă ăăăăăŽăăśă¤ăłăŻăťăź10ăśćéä˝ćĽä¸ă§ăďźďź
ăžăămem :: swapăŻăăžăŁăăčĺłćˇąăćŠč˝ă§ăŻăŞăăăă辤ăăăˇăłă§ăă ćĺéăăă
let temp = *a;
*a = *b;
*b = temp;
@GankroăŻĺŽĺ ¨ă§ăŞăăłăźăă使ç¨ăăŚăăžăăăďź Afaikăăăćĺéăć¸ăăă¨ăŻä¸ĺŻč˝ă§ăă
硨éďźăăăŤă¤ăăŚĺĽăŽčăćšăăăă¨ă T: Unpin
ămem::swap
čż˝ĺ ăăă¨ăĺŽéăŤăŻč¨čŞăŹăăŤă§ăŽĺŽĺ
¨ć§ăŽĺŽçžŠăĺ¤ăăă¨ćăăžăă ăăăŻéçăŽăăšăŚăŽmycrate::swap
fnsăĺŁăă§ăăăă
TďźUnpinămem :: swapăŤčż˝ĺ ăăă¨ăçšĺŽăŽăżă¤ăăăăłĺ ăŤăŞăĺ ´ĺă§ă使ç¨ă§ăăŞăăŞăăžăă
UnpinăčŞĺçăŤĺ°ĺşăăăĺ ´ĺďź Sync
/ Send
ă¨ĺăćšćłă§ďźăăăăŻĺéĄă§ăŻăŞăă¨ćăăžăăă
ăăăŻăăšăŚăŽă¸ă§ăăŞăăŻăłăźăăĺŁăă§ăăăďźĺśç´ăŞăă§ăăă¤ăăŽTăŽăăăŤäťćĽăŽĺŽĺŽăăéăŽä¸ă§é˘ć°ăć¸ăăŞăăăăŞăăŻăăăŤĺŻžăăŚăšăŻăăăĺźăłĺşăăă¨ăă§ăăžăă ăăăŻćŠč˝ăçśăăĺż čŚăăăăžăă
ăăăăăăăŻćăăăŤăăă§ăă çšć§ăŽĺ˘çăRustă§ć示çăŤäźćăăĺż čŚăăăă¨ăăäşĺŽăŤă¤ăăŚăŻčăăŚăăžăăă§ăăă
ăăă§ĺŽĺŽĺăŽăăăŤććĄăăăŚăăăăŽăĺ¤§ĺš ăŤčś ăăč¤éăăäź´ăăăŤăä¸ä˝äşćć§ăŽăăćšćłă§ç§ťĺä¸ĺŻč˝ăŞăżă¤ăăRustăŤčż˝ĺ ăăćšćłă示ăăäşşăŻčŞ°ăăăžăăă ăăăăŽĺ¤ăććĄă¨č°čŤăŽăăă¤ăăŻRFCăŞăă¸ăăŞăŤăăăžăă ä¸äžă¨ăăŚărust-lang / rfcsďź1858ăĺç §ăăŚăă ăăă
ăăăă§ăćéăăăă°ăăăăŤé˘ăăĺăŽä˝ćĽăŤă¤ăăŚăăĺ°ăčŞăżăžăă ćăăăŤăăăăŤăŻăă§ăŤĺ¤ăăŽčăă¨ĺŞĺă注ăăăŚăăăç§ăŻç˘şăăŤçŠäşăăăăăŻăăăăăăžăăă ăăăĺŚçăăăă¨ăăă¨ăăŤăć¸ĺżľäşé ă¨čłŞĺăćäžăăăăŁăă ăă§ăă
@ Matthias247
UnpinăčŞĺçăŤĺ°ĺşăăăĺ ´ĺďźSync / Sendă¨ĺăćšćłă§ďźăăăăŻĺéĄă§ăŻăŞăă¨ćăăžăăă
ăŻăŁăăăăŚăăăăŠăăăăăăžăăă ć確ăŤăăăăăŤă !Unpin
ăżă¤ăă秝ĺăăăă¨ăŻĺŽĺ
¨ăŤĺŽĺ
¨ă§ăăăăăăăŁăŚmem::swap
ă秝ĺăăăă¨ăŻĺŽĺ
¨ăŤĺŽĺ
¨ă§ăă ăżă¤ăT: !Unpin
ăĺşĺŽăăĺžăă¤ăžăPin<P<T>>
ĺ
ăŤç§ťĺăăăŽăŻĺŽĺ
¨ă§ăŻăăăžăăă
ăă¨ăă°ăasync / awaităłăźăă§ăŻăéĺćé˘ć°ăăčżăăăĺ
çŠă弽ăăŞă ă秝ĺă§ăăžăă pin_mut!
ăăăă Pin<Box<..>>>
ăŞăŠăŤĺ
Ľăăă¨ă秝ĺă§ăăŞăăŞăăžăă
ç§ăŻăăăŤă¤ăăŚăăă¤ăăŽăăžăăžăŞčłŞĺăăăăžăďź
async
ă¨ă¸ă§ăăŹăźăżăźăŽPin<T>
ăŽéčŚć§ă¨ăRustăŽäťăŽé¨ĺďźăă¨ăă°swap
ďź replace
ďźă¨ĺŻžčŠąăăă¨ăăŽä¸ĺĽĺ
¨ăăŽĺŻč˝ć§ăčăăă¨ăăăă§ććĄăăăŚăăăăłçăAPIăŽăăŞă˘ăłăăŽăăŠăźăăŤć¤č¨źďź @jhjourdanăžăăŻ
ăăŽAPIăŻăRustăŽć˝čąĄăăˇăł/ćä˝çăťăăłăăŁăŻăšăŤé˘ăăć°ăăäżč¨źăćäžăăžăăďź ă¤ăžăă async
ă¨await
/ă¸ă§ăăŹăźăżăźăŽăăăăłă°ăĄăŤăăşă ă¨ăăŚăŽăŚăźăšăąăźăšăĺżăăĺ ´ĺăăăăă¨ăłăˇăšăă ăŽăŻăŹăźăĺ
ăŤé
罎ă§ăăžăăďźçžĺ¨ăŽäżč¨źăăăă°ăăăăŻćŠč˝ăăžăăä¸ăăďź
ĺşĺŽAPIăĺŽĺŽăăăçľćăăŠăŽăăăŞç¨ŽéĄăŽAPIăžăăŻĺăˇăšăă ăŽčż˝ĺ ăä¸ĺŻč˝ăŤăŞăăžăăďź ďźăăŽčłŞĺăŻ2ăŽćĄĺźľă§ăăďź
ĺŽĺŽĺăăăAPIăŻăăăŁăźăŤăăăă¸ă§ăŻăˇă§ăłăŞăŠăćšĺăăăăăŤč¨čŞćäžăŽ&pin T
ăżă¤ăăé˛ĺăăăă¨ăăçšă§ăăŠăŽăăăŞć掾ăćäžăăžăăďźććĄăăăAPIă§ăŻăăžăčŻăăŞăăăă§ăďźă
ç§ăŻăăă¤ăăŽăăžăăžăŞăĄă˘ăćăŁăŚăăžăďź
ć¨ćşăŠă¤ăăŠăŞăŽăăăĽăĄăłăăŻăăŞăăžă°ăăŤčŚăăžăă :(
ç§ăŻăăăłçăć§é ăé常ăŤç˛žçĽçăŤč˛ ć ăăăă/č¤éă§ăăăă¨ăŤĺćăăžăă
ăăăĽăĄăłăăŽUnmovable
äžăŻé常ăŤč¤éăŤčŚăă unsafe
ăžăă ăăăŻćéŠă§ăŻăŞăăăă§ăă č¨čŞăŽRFCăăŠăăă§čŠłăă誏ćăăăŚăăăăăŤćŽľéçăŤĺćĺăăă¨ďźă¤ăžăăNLLăćšĺăăďźă䝣ăăăŤćŹĄăŽăă¨ăă§ăăžăă
struct Unmovable<'a> {
data: String,
slice: &'a str,
}
let um: Unmovable<'_>;
um.data = "hello".to_string();
um.slice = &um.data; // OK! we borrow self-referentially.
drop(um); // ERROR! `um.slice` is borrowing `um.data` so you cannot move `um`.
// You won't be able to take a &mut reference to `um` so no `swap` problems.
ăăăŤăŻĺŽĺ ¨ă§ăŞăăźăăĺŤăžăăăŚăźăśăźăăăăŤĺŻžĺŚăăăŽăŻé常ăŤç°Ąĺă§ăă
ăăăŤăstd APIăŻăăŞăă¸ă§ăŻăăăšăżăăŻăŤĺşĺŽăăĺŽĺ ¨ăŞćšćłăćäžăăžăăă
ăăăŻăé˘ć°APIă使ç¨ăăŚĺŽĺ ¨ăŤĺŽčŁ ăăćšćłăăŞăăăă§ăă
ăăŽăăăŞAPIăŻăŠăă§ăăďź
pub fn using_pin<T, R, F>(value: T, f: F) -> R
where F: for<'a> FnOnce(Pin<&'a mut T>) -> R {
pin_mut!(value); // Actual implementation inlines this but the point is this API is safe as long as pin_mut! is safe.
f(value)
}
ç§ăŻăăłçăAPIăŽéçşăăăžăĺłĺŻăŤăăŠăăźăăŚăăŞăăŁăăŽă§ăăăăŻäťăŽĺ ´ćă§č¨ĺăžăăŻčŞŹćăăăŚăăĺŻč˝ć§ăăăăăăăčŚă¤ăăăă¨ăă§ăăžăăă§ăăăăăŽĺ ´ĺăŻă芍ăłăăžăă
Pinned
ăżă¤ăăŻăUnpin
ĺŽčŁ ăăŞăZSTă§ăă ăăăŻăăŞăăăăăă¨ăĺŻč˝ăŤăăžă
ĺŽĺŽçă§ăŽUnpin
ăŽčŞĺĺŽčŁ ăćĺśăăžăăăăă§ă!Unpin
ăžă ĺŽĺŽăăŚăăžăăă
!Unpin
implsăĺŽĺŽăăăăă¨ăă§ăăŞăăŁăççąăŤă¤ăăŚăŽčŞŹćăŻăŠăăăŤăăăžăăďź
FooďźĺŤăăżă¤ăďźăreprďźpackedďźăăăŚăăŞăĺ ´ĺăŤăŽăżĺŽĺ ¨ă§ăă
ăăăŤăăăăăŁăźăŤăă秝ĺăăŚĺé 罎ăăăăăă§ăă
ăăăŻă¨ăŻăăăŁăźăŤăăĺçăŤç§ťĺă§ăăăă¨ăćĺłăăžăăďź ăăăŻĺ°ăćăă§ăă llvmăäťăŽçśćłă§ăăŁăźăŤăă秝ĺăăăłăźăăçćăăŞăăă¨ăŻç˘şăă§ăăďź ĺć§ăŤăăšăżăăŻăŤĺşĺŽăăăĺ¤ăllvmăŤăăŁăŚç§ťĺăăăĺŻč˝ć§ăŻăăăžăăďź
垎ĺŚă§ăăăăăăŻćŹĺ˝ăŤç´ ć´ăăăAPIăŽăăă§ăă ăăă§ăăžăăďź
@Centril RalfăŻă彟ăŽăăă°ăŤăăłçăăŤă¤ăăŚć¸ăăŚăăžăă
pin APIăŻč¨čŞăŽĺ¤ć´ăăžăŁăăĺŤăžăăć˘ĺăŽč¨čŞćŠč˝ă使ç¨ăăŚć¨ćşăŠă¤ăăŠăŞăŤĺŽĺ ¨ăŤĺŽčŁ ăăăŚăăžăă Rust the languageăŤăŻĺ˝ąéżăăăäťăŽč¨čŞćŠč˝ă塎ăćźăăăăă¨ăŻăăăžăăă
Pin
ăŻăRustăŽćă䞥ĺ¤ăŽăăĺ¤ĺ
¸çăŞćŠč˝ăŽ1ă¤ă§ăăăAPI unsafe
ä¸é¨ăăăźăŻăăăă¨ăŤăăŁăŚAPIăŤä¸ĺ¤ćĄäťśăĺ°ĺ
ĽăăćŠč˝ăŽĺˇ§ĺŚăŞĺŽčŁ
ăŤăăăžăăă Pin
ă1ă¤ăŽćä˝ďź DerefMut
ďźăĺŽĺ
¨ă§ăŞăăăŽăŤăăăăăŤăă¤ăłăżăźăăŠăăăăăăăĺŽčĄăăäşşă
ăçšĺŽăŽä¸ĺ¤ćĄäťśăćŻćăăăă¨ăčŚćąăďźĺç
§ăă秝ĺăăŞăăă¨ďźăäťăŽăłăźăăăăăŻćąşăăŚčľˇăăăŞăă¨äťŽĺŽăăžăă ăăŽĺăăăŞăăŻăŽĺć§ăŽăŻăăăŤĺ¤ăäžăŻString
ăăăăŤăăăUTF8䝼ĺ¤ăŽăă¤ăăćĺĺăŤĺ
ĽăăăŽăŻĺŽĺ
¨ă§ăŻăŞăăŞăăäťăŽăłăźăăŻString
ĺ
ăŽăăšăŚăŽăăźăżăUTF8ă
ďźUnpin implsăĺŽĺŽăăăăă¨ăă§ăăŞăăŁăççąăŤă¤ăăŚăŽčŞŹćăŻăŠăăăŤăăăžăăďź
č˛ ăŽimplăŻçžĺ¨ä¸ĺŽĺŽă§ăăăăăăăŽAPIă¨ăŻăžăŁăăé˘äżăăăăžăăă
č˛ ăŽimplăŻçžĺ¨ä¸ĺŽĺŽă§ăă
đ¤Śââď¸ăăăŻçăŤăăŞăŁăŚăăžăăăăĺ°ăéˇăčăăăšăă§ăăă ăăăă¨ăă
@alexcrichtonăăăŻăăăŽAPIăŽĺŞăăĺćă§ăă夹ăăăăłăĄăłăăăăăéŠĺăŞĺ ´ćăŤäżĺăăăăăŤăăŚăă ăăă
ăăă¤ăăŽăłăĄăłăďź
as_mut
ďźčłŞĺďźăćŞćăŽăăăDerefMutimplăŻăŠăă§ăăďź ăăăŻĺŽĺ ¨ăŞćšćłă§ă
ďźmut P :: Targetăăă¤ăăŁăăŤä˝ćăăăŚăźăśăźćäžăŽDerefMutăĺźăłĺşăăŤăŻă
ăăăăăăăăăăĺ¤ć´ăăăă¨ă訹ĺŻăăžăă ăăăŻăŠăŽăăăŤĺŽĺ ¨ă§ăăďź
ĺşćŹçăŤă new_unchecked
ăĺźăłĺşăă¨ăăăŽăżă¤ăăŽDeref
ă¨DerefMut
ĺŽčŁ
ăŤă¤ăăŚç´ćăăžăă
set
ďźä¸ăăăăăăłďźăăăŚç§ăăĄăä˝ăçĽăăŞăă¨ăăäşĺŽ
ĺşĺŽč§Łé¤ďźăăăăŻP :: TargetăćąşăăŚĺăăŞăăă¨ăäżč¨źăăăšăă§ăŻăăăžăăăďź ă§ăăă°
ăă ăăĺĽăŽP :: Targetă§ĺĺćĺăăăŽăŻĺŽĺ ¨ă§ăŻăŞăă§ăăăăďź
ăăă¨ăăăăăŻăŠăăăăăăăăšăăŠăŻăżăŞăŠăŤé˘éŁăăŚăăžăăďź
ăăăŤăăăăă¤ăłăżăŽĺ¤ăăłăłăăłăăĺé¤ăăăăăăŤć°ăăăłăłăăłăăé
罎ăăăžăă ăĺşĺŽăă¨ăŻăč˝ă¨ăăŞăăă¨ăăćĺłă§ăŻăŞăăăč˝ă¨ăăăăžă§ĺăăŞăăă¨ăăćĺłă§ăă ăăăăŁăŚă drop
ĺźăłĺşăä¸ăŤăăăăăăăăä¸ć¸ăăăŚdrop
ĺźăłĺşăăă¨ăŻé常ăŤéčŚă§ăăăăăŻç§ăä¸ă§čż°ăšăăăăăäżč¨źă§ăă
ăăă§ä˝ăăĺăăŚăăăŽăŻăŠăăŤăăăžăăďź
map_unchecked
ďźčłŞĺ::ăăă§ăŽĺäžăŻä˝ă§ăăďź ăăăĺŽĺ ¨ă ăŁăĺ ´ĺăăăłăŽäżč¨źăŤéĺăăŚăăăă¨ă示ăäžăŻä˝ă§ăăďź
äžă¨ăăŚăŻă Pin<&&T>
ă§éĺ§ăăăăŽăĄă˝ăăă使ç¨ăăŚPin<&T>
ăĺĺžăăžăă ĺşĺŽăŻăĺç
§ăăäźćăăăžăăă
get_ref
ďźăăă§ăŽăăăśăč˝ă¨ă犴ăăŽ1ă¤ăŻăĺ é¨ăŽĺŻĺ¤ć§ă§ăă
RefCellďź
確ăăŤăăăăŻč˝ă¨ă犴ă§ăăăăăŞăă茳ĺŻăăăăăŤăĺĽĺ
¨ć§ăŽĺéĄă§ăŻăăăžăăă ăŠăŽăăăŞä¸ĺĽĺ
¨ăŤăŞăăă¨ăăčĄăćšćłćăŁăŚăăPin<RefCell<T>>
ăŤPin<&[mut] T>
ă ĺşćŹçăŤă RefCell
ăŻăăłçăăäźćăăă impl<T> Unpin for RefCell<T>
ăžăă
ăăă§ććĄăăăŚăăăăłçăAPIăŽăăŞă˘ăłăăŤă¤ăăŚăăăŠăźăăŤć¤č¨źďź @jhjourdană@RalfJungăŞăŠďźăčĄăăăŚăăžăăďź
ăăăăç§ăăĄăŽĺ´ăăă§ăŻăăăžăăă ä¸č¨ăŽăăă°ć稿ăŤăŻăăăăăŠăŽăăăŤĺ˝˘ĺźĺăăăăŤă¤ăăŚăŽčăăăăă¤ăĺŤăžăăŚăăžăăăĺŽéăŤăŻăăăĺŽčĄăăŚăăžăăă ăżă¤ă ăăˇăłăčĺłăŽăăĺ壍課ç¨ăŽĺŚçăćăăŚăăă ăăă°ăăăăčĄăăžăă ;ďź
asyncďźawait / generatorsăŽăăăăłă°ăĄăŤăăşă ă¨ăăŚăŽăŚăźăšăąăźăšăĺżăăĺ ´ĺăăăăă¨ăłăˇăšăă ăŽăŻăŹăźăĺ ăŤé 罎ă§ăăžăăďźçžĺ¨ăŽäżč¨źăăăă°ćŠč˝ăăžăăďź
ăăăćĺłă§ăă
ĺşĺŽAPIăĺŽĺŽăăăçľćăăŠăŽăăăŞç¨ŽéĄăŽAPIăžăăŻĺăˇăšăă ăŽčż˝ĺ ăä¸ĺŻč˝ăŤăŞăăžăăďź ďźăăŽčłŞĺăŻ2ăŽćĄĺźľă§ăăďź
ăăă¨ăčŞäżĄăćăŁăŚăăŽčłŞĺăŤçăăćšćłăăăăăžăăă ĺŻč˝ăŞčż˝ĺ ăŽăšăăźăšăŻĺ¤§ăăăăŚăăžăéŤćŹĄĺ ăŞăŽă§ăç§ăŻăăăŤă¤ăăŚăŠăăŞç¨ŽéĄăŽćŽéçăŞĺŁ°ćăăăăŚăăžăăă
ĺŽĺŽĺăăăAPIăŻăăăŁăźăŤăăăă¸ă§ăŻăˇă§ăłăŞăŠăćšĺăăăăăŤč¨čŞćäžăŽďźpin Tăżă¤ăăé˛ĺăăăă¨ăăçšă§ăăŠăŽăăăŞć掾ăćäžăăžăăďźććĄăăăAPIă§ăŻăăžăčŻăăŞăăăă§ăďźă
&pin T
ăŤă¤ăăŚăŻăăăăăăžăăăăć°ăăćąç¨ăŽPin<T>
ă¨ăŻăăžăä¸č´ăăžăăă äşć¸ŹăŽĺŚçăŤé˘ăăŚăŻăă Unpin
ă¨Drop
ăŻăăŽăżă¤ăăŤăŻĺŽčŁ
ăăăŚăăžăăăă¨č¨ăăăăŽăăăŻăĺż
čŚă§ăăăăăăă°ăăăŻăă使ç¨ăăŚăăăĺŽĺ
¨ăŤčĄăăă¨ăă§ăăžăă čż˝ĺ ăŽäşşé塼ĺŚăŤă¤ăăŚăŻăč¨čŞăŽä¸čŹçăŞăăăŁăźăŤăăăă¸ă§ăŻăˇă§ăłăćŠč˝ăĺż
čŚăŤăŞăĺŻč˝ć§ăăăăžăăăăăŻă &Cell<(A, B)>
ăă&Cell<A>
ă¸ăŽç§ťčĄăăŤăăźăăžăă
ďźUnpin implsăĺŽĺŽăăăăă¨ăă§ăăŞăăŁăççąăŤă¤ăăŚăŽčŞŹćăŻăŠăăăŤăăăžăăďź
AFAIKăŽč˛ ăŽĺŽčŁ ăŤăŻéˇĺš´ăŽĺśéăăăăä¸čŹçăŞĺ˘çăčż˝ĺ ăăă¨ăćăŁăă¨ăăăŤćŠč˝ăăŞăăă¨ăăăăăăžăă ďźä¸čŹçăŞĺ˘çăŻăçĄčŚăăăĺ ´ĺăăăăžăăďź
ăăśăChalkăŻăăăăăšăŚäżŽćŁăăăăśăä¸é¨ă ăă俎ćŁăăžăăăăŠăĄăăŤăăŚăăChalkă§ăăăăăăăŻăăăăŞăă§ăăăă
ăăăŻă¨ăŻăăăŁăźăŤăăĺçăŤç§ťĺă§ăăăă¨ăćĺłăăžăăďź ăăăŻĺ°ăćăă§ăă
drop
ăć´ĺăăăĺç
§ăćĺž
ăăŚăăăă¨ăčăăă¨ăăăăŻăăăŻăăăăăŁăźăŤăă§drop
ăĺźăłĺşăĺŻä¸ăŽéŠĺăŞćšćłă§ăă
llvmăäťăŽçśćłă§ăăŁăźăŤăă秝ĺăăăłăźăăçćăăŞăăă¨ăŻç˘şăă§ăăďź ĺć§ăŤăăšăżăăŻăŤĺşĺŽăăăĺ¤ăllvmăŤăăŁăŚç§ťĺăăăĺŻč˝ć§ăŻăăăžăăďź
LLVMăăă¤ăăăłăăźăăŚăăăăă°ăŠă ăŽĺä˝ăĺ¤ć´ă§ăăŞăăăăĺéĄăŻăăăžăăă ăăăŻăRustă§čŚłĺŻă§ăăćšćłă§ăăăźăżăă秝ĺăăăă¨ăăéŤăŹăăŤăŽćŚĺżľăŤé˘ăăăăŽă§ăďźăă¨ăă°ăăăźăżă¸ăŽăă¤ăłăżăźăăăźăżăćăăŚăăŞăăăďźă LLVMăŻăăă¤ăłăżăăăĺŻč˝ć§ăŽăăäťăŽĺ ´ćăŤăăźăżă秝ĺăăăă¨ăŻă§ăăžăăă ĺć§ăŤăLLVMăŻăă˘ăăŹăšăĺĺžăăăăšăżăăŻä¸ăŽĺ¤ă秝ĺăăăă¨ăŻă§ăăžăăă
@RalfJungăŤćčŹă
ăăăăăăăăăžă§ç§ťĺăăŞăăă¨č¨ăĺ ´ĺăăăăŻă &mut self
ăPin<&mut Self>
ă˘ăăŹăšăă秝ĺăăĺ ´ćă§Drop
ăĺźăłĺşăăăĺŻč˝ć§ăăăăă¨ăćĺłăăžăăďź ăăšăăŠăŻăżăŻăĺ
é¨ăă¤ăłăżăćŁç˘şă§ăăăă¨ăŤäžĺăăăă¨ăŻă§ăăžăăăăďź
set
ăčŚăă¨ăăŽç§ăŽĺżé
ăŻăăăăăŻăăŠăŽăăăŤĺŚçăăăă
ăăăăăăăăăžă§ç§ťĺăăŞăăă¨č¨ăĺ ´ĺăăăăŻă
&mut self
ăPin<&mut Self>
ă˘ăăŹăšăă秝ĺăăĺ ´ćă§Drop
ăĺźăłĺşăăăĺŻč˝ć§ăăăăă¨ăćĺłăăžăăďź ăăšăăŠăŻăżăŻăĺ é¨ăă¤ăłăżăćŁç˘şă§ăăăă¨ăŤäžĺăăăă¨ăŻă§ăăžăăăăďź
@alexcrichtonç§ăŽç解ă§ăŻă Drop::drop
ăćťăăžă§ĺăăŞăă¨ăăăă¨ă§ăă ăăăăŞăă¨ăä¸é¨ăŽăŚăźăšăąăźăšďźäžľĺ
ĽĺăłăŹăŻăˇă§ăłă¨ĺ°ăŞăă¨ăăšăżăăŻăŤĺ˛ăĺ˝ăŚăăăDMAăăăăĄăźďźăä¸ĺŻč˝ăŤăŞăăžăă
ăăšăăŠăŻăżăŻă䝼ĺăŤPin
ăŤăăŁăăă¨ă訟ćă§ăăă°ă秝ĺăăăăă¨ăŽăŞăăăŽăŤäžĺă§ăăžăă ăă¨ăă°ăăšăăźăăăˇăłăăăăłçăăĺż
čŚăŞAPIăäťăăŚăŽăżçść
ăŤĺ
Ľăăă¨ăă§ăăĺ ´ĺăăăšăăŠăŻăżăŻăăăŽçść
ăŤăăĺ ´ĺăăăăăăăăĺăŤăăłçăăăăă¨čŚăŞăăă¨ăă§ăăžăă
ăłăźăă§ăŻăéăăźăŤăŤăŽăăšăăŠăŻăżăăĄăłăăźă秝ĺăăŞăă¨ćłĺŽăăăă¨ăŻă§ăăžăăăăčŞĺăä˝ćăăŚăăăŽă§ăčŞĺăŽăăšăăŠăŻăżăçŠäşă秝ĺăăŞăă¨ćłĺŽăăăă¨ăŻă§ăăžăă
ăăăăăăăăăžă§ç§ťĺăăŞăăă¨č¨ăĺ ´ĺăăăăŻăďźmutselfăPin <ďźmut Self>ăŽă˘ăăŹăšăă秝ĺăăĺ ´ćă§DropăĺźăłĺşăăăĺŻč˝ć§ăăăăă¨ăćĺłăăžăăďź ăăšăăŠăŻăżăŻăĺ é¨ăă¤ăłăżăćŁç˘şă§ăăăă¨ăŤäžĺăăăă¨ăŻă§ăăžăăăăďź
ă¤ăžăă drop
ăĺźăłĺşăăăăžă§ăăăźăżăŻďźĺ˛ăĺ˝ăŚč§Łé¤ăăăŞăăŞăŠăäťăŽĺ ´ćăŤç§ťĺăăŞăă¨ăăćĺłă§ďźç§ťĺăăăă¨ăŻăăăžăăă ăŻăă drop
ăŻăăăŽăżă¤ăă§čĄ¨çžă§ăăŞăĺ ´ĺă§ăăĺşĺŽăăăĺ ´ćă§ăŽĺŽčĄăŤäžĺă§ăăžăă drop
ăŻďźăăšăŚăŽăżă¤ăă§ďź Pin<&mut self>
ăăăăŻăă§ăăăćŽĺżľăŞăăăăăăŤăŻé
ăăăžăă
drop
ăĺźăłĺşăăăĺžăăăźăżăŻçĄćĺłăŞăă¤ăăŤăŞăăžăăć°ăăăăŽăăăăŤĺ
Ľăăăăĺ˛ăĺ˝ăŚă解é¤ăăăăä˝ă§ăă§ăăžăă
ăăăŤăăăăă¨ăă°ăčŚç´ ăŽăăšăăŠăŻăżăéŁćĽăăăă¤ăłăżă調ć´ăăăă¨ăŤăăŁăŚčŚç´ ăŽçťé˛ă解é¤ăăăäžľĺ ĽçăŞăŞăłăŻăŞăšăăĺŻč˝ăŤăŞăăžăă ăăŽăăšăăŠăŻăżăĺźăłĺşăăăŞăéăăăĄă˘ăŞăćśăăăă¨ăŻăăăžăăă ďźčŚç´ ăŻĺźăçśăăŞăźăŻăăăĺŻč˝ć§
ç§ăŻPin
ă Unpin
ă§čŚă¤ăăăă¨ăă§ăăăăšăŚă¨ăăăăŤčłăăžă§ăŽč°čŤăčŞăă§ăăžăăç§ăŻäťä˝ă辡ăăŁăŚăăăŽăăç解ăăŚăăă¨ćăăžăăăăăăăăăăžăăăăžăăžăŞăżă¤ăăŽćĺłăăăăłĺŽčŁ
č
ă¨ăŚăźăśăźăĺžăăŞăăă°ăŞăăŞăĺĽç´ăŤé˘ăă垎ĺŚăŞçšă ćŽĺżľăŞăăă std::pin
ăŽăăăĽăĄăłăăăžăăŻçšăŤPin
ă¨Unpin
ăŤă¤ăăŚăŻăćŻčźçăťă¨ăăŠč°čŤăăăŚăăžăăă çšăŤăç§ăŻăăăăŽăłăĄăłăăăăŽăłăłăăłăăŽăăă¤ăăčŚăăă¨ćăăžăďź
ăăăĽăĄăłăăŤçľăżčžźăžăăŚăăžăă ĺ ˇä˝çăŤăŻďź
Pin
ăŻăă1ăŹăăŤăŽćˇąăăăŽăżăäżčˇăăžăăPin::new_unchecked
ăŻă Deref
ă¨DerefMut
ăŽimplăŤĺśéă課ăăžăăPin
ă¨Drop
éăŽç¸äşä˝ç¨ă!Unpin
ăŻă Pin
é
罎ăăăĺžăŤăŽăżç§ťĺă§ăăžăăăPin<Box<T>>: Unpin where T: !Unpin
ççąă ăăăŻä¸č¨ăŽă1ăŹăăŤăŽćˇąăăăŽĺśéăŤé˘éŁăăŚăăžăăăéŠĺăŞčŞŹćăĺŤăăăŽĺ
ˇä˝çăŞäžăŻăčŞč
ăŤĺ˝šçŤă¤ă¨ćăăžăă@alexcrichtonăŽĺäžăé常ăŤĺ˝šăŤçŤăĄăžăăă ĺăŞăćŁć䝼ĺ¤ăŽăăžăăžăŞunsafe
ăĄă˝ăăă§ä˝ăăăžăăăăŞăăăčŞč
ăŤç解ăăăăă¨ăŻă大ăăŤĺ˝šçŤă¤ă¨ćăăžăďźĺ°ăŞăă¨ăç§ăŤă¨ăŁăŚăŻç˘şăăŤĺ˝šăŤçŤăĄăžăăďźă ä¸čŹăŤăăăŽAPIăŽĺžŽĺŚăăŽăăăŤăăăžăăžăŞĺŽĺ
¨ă§ăŞăăĄă˝ăăăŽĺŽĺ
¨ăťăŻăˇă§ăłăćĄĺźľăăăăăăăstd::pin
ă˘ă¸ăĽăźăŤăŹăăŤăŽăăăĽăĄăłăăăăĺç
§ăăăăă¨ăćăă§ăăžăă
ç§čŞčşŤăŻăžă ăăŽAPIăăăžă使ăŁăŚăăŞăăŽă§ăäťăŻčŻăçść
ă ă¨ăăćčĄçăŞĺ¤ćă俥ăăŚăăžăă ăă ăă Pin
ă Pinned
ă Unpin
ă¨ăăĺĺăŻăé常ăŤç°ăŞăăżă¤ă/çšć§ă¨ćŻčźçč¤éăŞAPIăŤĺŻžăăŚéĄäźźăăŚăăŚčĄ¨çžĺăăŞăăăăç解ăéŁăăăŞăă¨ćăăžăă ďźăăŽăšăŹăăăŤé˘ăăăăă¤ăăŽăłăĄăłăăăăćăăă§ăďźă
ăăăăŻăăźăŤăźçšć§ăŽĺ˝ĺčŚĺăŤĺžăŁăŚăăăăăŤčŚăăăŽă§ăç§ăŻćŹĺ˝ăŤćĺĽăč¨ăăă¨ăŻă§ăăžăăăăĺéˇć§ă¨čŞĺˇąčŞŹćçăŞĺĺăŽéă§ăăŹăźăăŞăăčĄăăă¨ăă§ăăăăŠăăçĺăŤćăăžăă
Pinned
- Pin
ă¨ĺăĺčŞă§ăăăăă桡䚹ăćăăžăă PhantomData
ăăăŤä˝żç¨ăăăŚăăăă§ăŞăăă°ćŹ č˝ăăŚăăăĄăżć
ĺ ąă§ć§é ä˝ăčŁĺźˇăăăă¨ăčăăă¨ă PinnedData
ă PhantomPinned
ă PhantomSelfRef
ăăăăŤăŻDisableUnpin
ăŻăŠăă§ăăăăă Unpin
- httpsďź //github.com/rust-lang/rust/issues/55766#issuecomment -437266922ăŽăăăŤă Unpin
ă¨ăăĺĺă§ćˇˇäšąăăŚăăžăă ăč¤ć°ăŽăăăžăăŞćšćłă§ç解ăăăă¨ăă§ăăžăă IgnorePin
ă PinNeutral
ă§ăăăăďźä¸čŹçăŤç§ăŻĺ¤ąćăăčŞĺă§čŻă䝣ćżĺăčŚă¤ăăŚăăžă...
PhantomPină¨PinNeutralăŻăçšăŤç´ ć´ăăăĺĺă¨ăăŚç§ă輲ăăžăă
寞ä˝ćłăćäžăăăăăŤăç§ăŻUnpin
ç´ćçă§ăăăă¨ăăăăăžăăďźä¸ĺşŚç解ăăă¨ďźă Pinned
ăŻăčŞĺăŽăłăźăă§ä˝żç¨ăăăă¨ăăŞăăŽă§ăăžăŁăăăŤäżă¤ăŽăéŁăăă§ăă Pinned
ăNotUnpin
ăŠăă§ăăďź
ç§ăŻăăăłçăăŤă¤ăăŚčŠąăăăăăăăăăŤăăăčŻăĺĺăčŚă¤ăăăă¨ăăčŞčť˘čťăćľă䞥ĺ¤ăŽăăćźçżăŤăŞăĺŻč˝ć§ăăăăă¨ăŤĺćăăžăă ç§ăććĄăăďź
Pin
-> Pinned
ďź Pin
ăä¸ăăăăă¨ăăăăăŻăăŞăăä¸ăăăăăăŽă_ĺşĺŽăăăŚ_ăć°¸äš
ăŤ_ĺşĺŽăăăăžăžăŤăŞăă¨ăăç´ćă§ăă ăăăăăăŞăăŻă䞥ĺ¤ăŽăăłăăä¸ăăăăăă¨ăŤă¤ăăŚă芹ăăă¨ăă§ăăăŽă§ăç§ăŻăăăŤă¤ăăŚăăžă埡ăćăăžăăă Pinned<Box<T>>
ăçšăŤBox
ăĺşĺŽăăăŚăăăĺŤăžăăŚăăăăŽăŻĺşĺŽăăăŚăăŞăă¨ăăçšă§ăç§ăŤăŻčŞăżăăăăŞăŁăŚăăžăăUnpin
-> Repin
ďźäťăŽăăźăŤăźçšć§ăŤă¤ăăŚăŻăé常ăăăŽăăźăŤăźçšć§ăćă¤ăăŽă§ä˝ăă§ăăăăŤă¤ăăŚčŠąăăžăă ăăăăUnpin
ăé¸ă°ăăăŽăŻăăŽăăă§ăăăă ăă ăăăăă§čŞč
ăŤćŹĺ˝ăŤĺăä¸ăăŚăăăăăăŽăŻă Unpin
ăăŽăĺşĺŽăăŚăăăçľćăčć
ŽăŞăăŤĺĽăŽĺ ´ćăŤĺĺşĺŽă§ăăăă¨ă ă¨ćăăžăă @ mark-imăŤăăPinNeutral
ăŽććĄăć°ăŤĺ
ĽăŁăŚăăžăăăĺ¤ĺ°ĺéˇă§ăăPinned
-> PermanentPin
ďź Pinned
ăĺŤăăăŽăŻĺŽéăŤăŻĺşĺŽăăăŚăăŞăăăă Pinned
ăŻéŠĺăŞĺĺă§ăŻăŞăă¨ćăăžăă Unpin
ăŻăăăžăăă PhantomPin
ăŤăĺć§ăŽĺéĄăăăă Pin
ăĺŽéăŤĺĺžăăăăăŽă§ăŻăŞăĺ ´ĺăŤă Pin
Pin
ăăžăă NotUnpin
ăŤăŻäşéĺŚĺŽăăăăăăć¨čŤăĺ°éŁă§ăă @KimundiăŽPhantomSelfRef
ăŽć¨ć¸ŹăŻăăŞăčżăăŞăăžăăăăăă§ăĺ°ăăč¤éăă ă¨ćăăžăăăžăăăä¸ĺşŚĺşĺŽăăă¨ç§ťĺă§ăăŞăăă¨ăăăăăăăŁăăăăŽĺ ´ĺăŽ1ă¤ăŽPermanentlyPinned
ă¨čĄ¨çžăăăă¨ăă§ăăžăă ăŠăĄăăŽĺ˝˘ăăăăťăŠćŞăăŞăăŽăăăăăžăăăç§ăŻă¨ćăăžăPinned
ăŤăŞăŁăŚăăžăăŻăă§ăNotX
ă¨ăăX
ä˝ă§ăăUnpin
ă¨ăăĺĺăăăŚăăžăăžăă Pinned
ăŽĺŻä¸ăŽäťäşăŻăĺ˛ăă§ăăĺăUnpin
ĺŽčŁ
ăăŞăăăăŤăăăă¨ă§ăă ďźçˇ¨éďź Unpin
ăĺĽăŽăăŽăŤĺ¤ć´ăăĺ ´ĺăăăăăäşéĺŚĺŽăŻĺéĄă§ăŻăăăžăăďź
Repin
ăŻç§ăŤăŻćĺłăăăăžăăăăăăŽăżă¤ăăŻĺĽăŽĺ ´ćăŤĺşĺŽă§ăăăă¨ăăăŽăŻăăăăŽăżă¤ăăŻăăłăă秝ĺă§ăăăă¨ăăĺŻä˝ç¨ăŤăăăŞăăăă§ăă
@tikueăăćĺłă§ăŻĺăăăăŤćăăžăăăéă§ăă Unpin
ăŻč˛ ăŽăăăăŻPin
ăŤăăŁăŚĺśç´ăăăŚăăŞăăă¨čĄ¨çžăăăăšăă ă¨ćăăžăăă Pinned
ăŻćŁăŽăăăăŻPin
ăŤăăŁăŚĺśç´ăăăŚăăăă¨čĄ¨çžăăăăšăă§ăs/Unpin/TemporaryPin
ă s/Pinned/PermanentPin
ďź
硨éďźăăă Repin
ăUnpin
ĺŻä˝ç¨ă§ăăă¨ăăăăŞăăŽććăăăăăžăă Pin
ăŻă Unpin
ăżă¤ăă§ăŻăéčŚă§ăŻăŞăăă¨ăăäşĺŽăäźăăăăŁăăŽă§ăăă Unpin
ăŻăăžăăăžăćŠč˝ăăŞăă¨ćăăžăă ăăăăŁăŚăä¸č¨ăŽTemporaryPin
ăŽććĄă
@jonhooç§ăĺ寞ă弽ă丝ăŞççąăŻă Pinned
ăçšć§ăŽĺŽčŁ
ă匨ăăăăă ă¨ćăăžăăă¤ăžăăç§ăŤă¨ăŁăŚćăăăăăăăćĺłă§ăçăŽăăŹăăŁăă§ăă
硨éďźăŠăă§ăăďź
Unpin -> Escape
Pinned -> NoEscape
čĺłćˇąă..ç§ăŻăăăăăăĽăĄăłăăŤăŠăŽăăăŤéŠĺăăăăčŚăăă¨ăăŚăăžăă ä˝ăăŽăăăŞăăŽďź
ä¸čŹăŤă
Pin<P>
ăä¸ăăăăă¨ăP
ăŽăżăźă˛ăăăăăăăăăăăžă§ç§ťĺăăŞăăă¨ăäżč¨źăăăžăă ăăăŽäžĺ¤ăŻăP
ăŽăżăźă˛ăăăEscape
ă§ăăEscape
ăăźăŻăăăăżă¤ăăŻă秝ĺăăăŚăćĺšă§ăăăă¨ăç´ćăăăŚăăăăďźăă¨ăă°ăĺ é¨čŞĺˇąĺç §ăĺŤăžăăŚăăŞăďźăPin
ăăă¨ăšăąăźăăă§ăăžăăEscape
ăŻčŞĺçšć§ă§ăăăăăEscape
ă§ăăăżă¤ăăŽăżă§ć§ćăăăăăšăŚăŽăżă¤ăăŻăăăčŞä˝ăEscape
ă§ăă ĺŽčŁ č ăŻăimpl !Escape for T {}
ă使ç¨ăăăăstd::phantom
ăăNoEscape
ăăźăŤăźăĺŤăăăă¨ăŤăăăćŻćŠăăăăŞăăă˘ăŚăă§ăăžăă
ăă¨ăšăąăźăăă¨ăăč¨čă¨ăŽă¤ăŞăăăŻĺ°ăĺ¸čăŤčŚăăžăăăăăăŻăăŞăăžă¨ăăŞăăă§ăă ăăă¨ăŻĺĽăŤăä¸č¨ăć¸ăă¨ă Pin<P>
ăŻă P
ăŽăżăźă˛ăăă秝ĺăăŞăăă¨ă_ćŹĺ˝ăŤ_äżč¨źăăŞăăă¨ăŤăć°ăĽăăžăăďźćŁç˘şăŤăŻUnpin
ďźă 䝣ăăăŤă P
ăŽăżăźă˛ăăă秝ĺăăăăŠăăăăžăăŻP
ăŽăżăźă˛ăăă秝ĺăăŞăăăŠăăăŻé˘äżăăăžăăă ăăăăăăă使ç¨ăăŚĺĺăŽăăčŻăé¸ćăéçĽăăćšćłăăăăăžăă...ăăăăăăăŻăăăăä˝ăăăŽćšćłă§ăăăĽăĄăłăăŤçľăżčžźăžăăăšăăăŽă§ăă
ĺäşşçăŤăŻăç§ăĺĺă¨ăăŚUnpin
大ĺŤăă§ăăăăăăăăăăłăĺ¤ăăŞăăă¨čŞăżăăăă¤ăăŽčłăľă¤ăŻăŤăĺż
čŚă¨ăăimpl !Unpin
ă¨čŚăŞăăăăă¨ăćăĺ¤ăăăă§ăďźI 'ăŻĺ¤ăă˘ăăŤă§ăďźăăăăŻăćĺăŤĺşĺŽăăă¨ć°¸äš
ăŤĺşĺŽăăăžăăă¨ăăćĺłă§ăăăăăäşéĺŚĺŽăćéŠĺăăăă¨ăăă§ăăžăăă
ä¸čŹăŤăäşşéăŻăă¸ăăŁăă§ăŻăŞăăăŹăăŁăă§čăăăŽăŤčŚĺ´ăăĺžĺăăăăžăďźç´ćĽăŽć
ĺ ąćşăŻăăăžăăăăçĺăăăĺ ´ĺăŻăŞăăŁăźăăăă˝ăłăŽä˝ĺăăă§ăăŻăăŚăă ăăďźă
ă¨ăăă§Repin
ăŻç§ăŤăŻćŹĺ˝ăŤăăă§ăăă
Pin
ăŻăĺşĺŽăăăĺ¤ă常ăŤĺăăăŞăăăăŤăăăăă§ăŻăŞăăăă誏ćăăăŽăŻĺ°éŁă§ăă Pinned
ăŻĺŽéăŤăŻä˝ăĺşĺŽăăŞăăăă桡䚹ăćăăžăă Pin
ă¨ăšăąăźăăé˛ăă ăă§ăă
Pin<P<T>>
ăŻăăăłçăăăăĺ¤ă¨ăăŚčŞŹćă§ăăžăăăăłçăăăăĺ¤ăŻăĺ¤ăăăłăă¨ăšăąăźăă§ăăăżă¤ăă§ăŞăéă秝ĺă§ăăžăăă
ăăă¤ăăŽç°ĄĺăŞă°ăźă°ăŤăŻăăŹăšăŞăłă°ă§ăăăłă§çăăăăă¨ăăŤăăăłăăćăĺşăăă¨ăă¨ăšăąăźăă¨
Unpin
䝣ăăăŤă¨ăšăąăźăă¨ăăç¨čŞă弽ăă§ăăă EscapePin
ăžăă
ăăăŤăŻăăăăăŽčŻăčăăăăăžăďź
ä¸čŹçăŞăă¨ăŽ1ă¤ďźéăă¤ăăŁăăšăăźăŤăźă¨ăăŚăŽç§ăŤă¨ăŁăŚă Pin
ă¨Unpin
ăŻä¸ťăŤĺčŠ/ă˘ăŻăˇă§ăłă§ăă Pin
ăŻçăŤăăŞăŁăŚăăžăăăăŞăă¸ă§ăŻăăŻä¸ĺşŚăŤ1ă¤ăŽăĄă˘ăŞä˝ç˝ŽăŤĺşĺŽăăăŚăăăăă Unpin
ă§ăŻĺăăăŽăčŚăăă¨ăă§ăăžăăă Pin<&mut T>
ĺç
§ăĺăĺăă¨ăTăŻă Unpin
ă§ăăăăŠăăăŤé˘äżăŞăăăĄă˘ăŞä˝ç˝ŽăĺŽĺŽăăŚăăă¨ăăćĺłă§ĺ¸¸ăŤĺşĺŽăăăžăă ăŞăă¸ă§ăŻăăă˘ăŻăˇă§ăłă¨ăăŚĺŽéăŤĺşĺŽč§Łé¤ăăăă¨ăŻă§ăăžăăă éăăŻă Unpin
ăżă¤ăă§ăŻăăă䝼éăŽĺŻžčŠąă§ăăłçăăŽäżč¨źăçśćăăăĺż
čŚăăŞăăă¨ă§ăă ăăăăŻčŞĺˇąĺç
§çă§ăŻăŞăăăăăăŽăĄă˘ăŞă˘ăăŹăšăŻăăă¨ăă°ĺĽăŽăŞăă¸ă§ăŻăăŤé俥ăăăŚăăăŤć źç´ăăăăă¨ăŻăăăžăăă
ç§ăŻ@tikueăŤĺćăUnpin
ĺŽéăŤä˝ăćĺłăăăŽăăŤă¤ăăŚĺ°čąĄçăŞä˝ĺăăăă°ăăăŽă§ăăăĺŽéĺăăăŽăŻéŁăăă§ăă ăăăăŽăżă¤ăă秝ĺĺŻââč˝ă§ăăă¨ăăăă¨ă ăă§ăŻăŞăăčŞĺˇąĺç
§ć§ăŽćŹ ĺŚă§ăăăăžăăăďź ăăŞăă¸ă§ăŻăă秝ĺăăŚăăăĄă˘ăŞçŠşéĺ
¨ä˝ăŽăă¤ăłăżăçĄĺšăŤăŞăăŞăăă¨ăăăă¨ăăăăăžăăă 揥ăŤă StableOnMoveAfterPin
ăăăŞăăŽăăžăăŻĺăŤStableMove
ăăăŞăăŽăăŞăăˇă§ăłăăăăăžăăăăăăăăăăžăčŻăăŞăăăăŤčăăăžăă
ç§ăŤă¨ăŁăŚRepin
ăŻă Unpin
ă¨ĺăč¤éăăćăŁăŚăăžăăă¤ăžăăćĺăŤ1ă¤ăŽăă¨ăĺşĺŽč§Łé¤ăăăăă¨ăćĺłăăžăăăăăŻăç§ăŽç解ă§ăŻčľˇăăăžăăă
çšć§ăŻä¸ťăŤăăăŽăżă¤ăăŽPin
ăčŚăĺžăŤä˝ă辡ăăăăĺŽçžŠăăăŽă§ă PinNeutral
ăPinInvariant
ăŻăăăťăŠćŞăăŞăăă¨ăăăăăžăă
Pin
ă¨Pinned
ă Pinned
ăé¸ćăăăťăăăăă¨ćăăžăăăăăŻăăăă襨示ăăćçšă§ăŽăă¤ăłăżăźăŽçść
ă ăăă§ăă
@ Matthias247 P: Unpin
ĺ ´ĺă P::Target
ăŽă˘ăăŹăšăĺŽĺŽăăŚăăăă¨ăäżč¨źăăăŚăăă¨ăŻćăăžăăăďź ç§ăŻăăăŤă¤ăăŚééăŁăŚăăĺŻč˝ć§ăăăăžăăďź
@ Matthias247
Pin <ďźmut T>ăŽĺç §ăĺăĺăă¨ăUnpină§ăăăăŠăăăŤé˘äżăŞăăăĄă˘ăŞä˝ç˝ŽăĺŽĺŽăăŚăăă¨ăăćĺłă§TăŻĺ¸¸ăŤĺşĺŽăăăžăă
ăăăä˝ăćĺłăăăŽăć確ăŤă§ăăžăăďź T: Unpin
ăä¸ăăăăă¨ă揥ăŽăăăŤć¸ăăă¨ăă§ăăžăă
let pin_t: Pin<&mut T> = ...
let mut other_t: T = ...
mem::replace(Pin::get_mut(pin_t), &mut other_t);
// Now the value originally behind pin_t is in other_t
@jonhooĺŽéăŤăŻčŻă質ĺă§ăă ç§ăŽć¨čŤăŻăĺ
çŠăăăăŻăšĺăăăăăăăŽpoll()
ăĄă˝ăăăĺăăĄă˘ăŞă˘ăăŹăšă§ĺźăłĺşăăăă¨ăăăăŽUnpin
ă¨ăăŤĺ
çŠă秝ĺăăăĺŻč˝ć§ăăăăžăă ă ăăăăŞăăŻćŁăăăăă§ăă
ćć°ăŽăă¤ăŻăˇă§ăăŁăłă°ăŤă¤ăăŚďź
Unpin
ďź MoveFromPin
ăŠăă§ăăďź ç§ăăžă ăăă¤ăăŽĺžŽĺŚăŞçšăčŚéăăŚăăŞăĺ ´ĺăăăăŻçšć§ăĺŽéăŤăŠăŽćŠč˝ăćĺšăŤăăăăç´ćĽç¤şăăŚăăă¨ćăăžăăăżă¤ăăPin
ăŤăăĺ ´ĺă§ăă秝ĺă§ăăžăă
éčŚăŞăŽăŻă Unpin
ă¨ĺăăă¨ăč¨ăăŽă§ăăăćŁăŽă˘ăľăźăˇă§ăłă¨ăăŚăăŹăźă ĺăăăŚăăăăăäşéĺŚĺŽăŽ!Unpin
䝣ăăăŤ!MoveFromPin
ăžăă ĺ°ăŞăă¨ăă解éăăăăă¨ćăăžă...ăăă¨ăăăłăă秝ĺă§ăăŞăăżă¤ăă§ăă
ďźĺşćŹçăŞčăćšăŤăŻăăŞă¨ăźăˇă§ăłăŽä˝ĺ°ăăăăžăďź MoveOutOfPin
ă MoveFromPinned
ă MoveWhenPinned
ăŞăŠăďź
Pinned
ďźăăăŻNoMoveFromPin
ăŤăŞăĺŻč˝ć§ăăăăăăŽĺšćăŻăżă¤ă!MoveFromPin
ă§ăă ăăăŻç°ĄĺăŤćăăžăă
Pin
čŞä˝ďźăăăŻäťăŽ2ă¤ă¨ăŻé˘äżăăŞăăăăăťăŠéčŚă§ăŻăăăžăăăăăăă§ăčĽĺš˛ăŽćšĺăŽä˝ĺ°ăăăă¨ćăăžăă
ĺéĄăŻăďźăă¨ăă°ďź Pin<&mut T>
ăŻă &mut
ăĺşĺŽăăăŚăăăă¨ăćĺłăăăŽă§ăŻăŞăă T
ăĺşĺŽăăăŚăăăă¨ăćĺłăăžăďźç§ăčŚăă¨ćă桡䚹ďźĺ°ăŞăă¨ă1ă¤ăŽćčżăŽăłăĄăłă訟ć ďźă Pin
é¨ĺăŻă &mut
ä¸ç¨ŽăŽäżŽéŁžĺă¨ăăŚćŠč˝ăăăăă Pinning
ă¨ĺźăśćšăăăĺ ´ĺăăăă¨ćăăžăă
ăăăŤăŻăăă¤ăăŽéćĽçăŞĺäžăăăăžăăăăăăŻăŽäťŁăăăŤăŠăăă˘ăŠăŚăłăăăăăăŤć´ć°ĺăŽăŞăźăăźăăăźăťăăłăăŁăŻăšăĺ¤ć´ăăĺ ´ĺăŻă Wrap<i32>
ă§ăŻăŞăWrapping<i32>
ă¨č¨ăăžăă
ăăăăŻăăšăŚăŞăŞă¸ăăŤăăăéˇăă§ăăăăăăăŽĺ¨ăăŽççąăŽăăă¤ăăăŠăăťăŠçšç´°ă§ăăăăčăăă¨ăăăć確ăŤăăăăăŤćčłăă䞥ĺ¤ăăăăăăăăžăăă
Reďź Repin
ăăăăŻćŹĄăŽăăăŞăăŽăŤăŞăă¨ćăăžă
unsafe trait Repin {
unsafe fn repin(from: *mut Self, to: *mut Self);
}
ăăăŻăăłăłăăłăăćă
秝ĺăăVec
ăăăŞăłăŹăŻăˇă§ăłĺ
ăŽ!Unpin
ăżă¤ăăăľăăźăăăăăăŤä˝żç¨ă§ăăžăďźăăăŻăçžĺ¨ăžăăŻăăăžă§ăŤăăŽăăăŞçšć§ăčż˝ĺ ăăăăăŽććĄă§ăŻăŞăăçšć§ĺďźă
ăžăăĺĺăbiksheddingďź
Pin<P>
-> Pinned<P>
ďźăă¤ăłăżP
ćăĺ¤ăŻăăăŽĺçśćéä¸ďźăăăăăăăăžă§ďźăĄă˘ăŞăŤĺşĺŽăăăžăăUnpin
-> Moveable
ďźĺ¤ăĺşĺŽăăĺż
čŚăŻăŞăăčŞçąăŤç§ťĺă§ăăžăăPinned
ďźć§é ä˝ďź-> Unmoveable
ďź Pinned
ă§ăăĺż
čŚăăăă秝ĺă§ăăžăăăPin
ăžăăŻUnpin
ăĺ¤ć´ăăĺż
čŚăŻăŞăă¨ćăăžăă䝣ćżćĄăŻăăšăŚăç§ăŽćčŚă§ăŻć確ăŤăŞăăăŤĺéˇć§ăčż˝ĺ ăăăăăžăŁăă誤解ăćăĺŻč˝ć§ăăăăăžăă ăžăăç§ăăĄăŻăă§ăŤăăŽäźčŠąăăăŚăăŚă Pin
ă¨Unpin
ă使ç¨ăăă¨ăăćąşĺŽăŤéăăžăăăăăăŚăăŽăšăŹăăă§ć辡ăăăč°čŤăŻăŠăăć°ăăăăŽă§ăŻăăăžăăă
ăă ăăĺăŽčŞŹćăăPinned
ăčż˝ĺ ăăăăŽă§ă PhantomData
ăăăŞăăĄăłăă ăăźăŤăźăżă¤ăăć確ăŤăăăăăŤPhantomPinned
ăŤăăăŽăŻçăŤăăŞăŁăŚăăă¨ćăăžăă
ĺäşşçăŤăŻăĺĺă¨ăăŚăŽUnpină大ĺŤăă§ăăăăăăăănot-un-pinăă¨čĄ¨ç¤şăăăçľčŤăĺşăăŽăŤć°ĺăŽăăŹă¤ăłăľă¤ăŻăŤďźç§ăŻĺ¤ăă˘ăăŤă§ăďźăĺż čŚă¨ăăimplďźUnpină¨čŚăŞăăăăă¨ăĺ¤ăăăă§ăăă¤ăžăăăăăăŻăćĺăŤĺşĺŽăăăă¨ć°¸äš ăŤĺşĺŽăăăăă¨ăăćĺłăŞăŽă§ăäşéĺŚĺŽăćéŠĺăăăă¨ăăă§ăăžăăă
ăăăŻç§ăŽçľé¨ă¨ăŻĺŽĺ
¨ăŤĺ寞ă§ăăćĺă§!Unpin
ăĺŽčŁ
ăăă¨ăăăă¨ăŻăé常ăŤăăăăŞăŚăźăšăąăźăšă§ăăĺŽĺ
¨ă§ăŞăăłăźăă使ç¨ăăŚćĺă§čŞĺˇąĺç
§ć§é ăĺŽčŁ
ăăăă¨ăćĺłăăžăă 寞ç
§çăŤăăă¤ăłăżăźăŽčĺžăŤć˝ĺ¨çăŤĺşĺŽč§Łé¤ăăăć§é ä˝ăäżćăăăăŽăŻăăšăŚă Unpin
ćŁăŽćéťăćăĄăžăă implsăŽăăšăŚăŽUnpin
ă§std
ăăă¨ăă°ăćŁćĽľć§ă§ăă
@withoutboatsăăă§ć辡ăăăč°čŤăăă§ăŤč°čŤăăăŚăăăăăăŽĺĺăŤé˘ăă䝼ĺăŽč°čŤă¸ăŽăŞăłăŻăćäžă§ăăžăăďź
ăăăŻ1ă¤ăŽăšăŹăăă§ăăăRFCăšăŹăăă¨čż˝čˇĄăŽĺéĄăŤă¤ăăŚăč°čŤăăăŚăăžăhttps://internals.rust-lang.org/t/naming-pin-anchor-move/6864
ďźăăŽăšăŹăăăŽă˘ăłăŤăźă¨ăăłă¨ĺźă°ăăăżă¤ăăŻă Pin<Box<T>>
ă¨Pin<&'a mut T>
ă¨ĺźă°ăăăăăŤăŞăăžăăďź
UnpinăŻUnpinnableăŽçĽčŞă¨ăăŚčŞăžăăăšăă§ăăďź ăăłĺ ăŤăăĺ ´ĺă§ăăĺŽéăŤăŻĺ¤ăăăłçăăăŚăăăă¨ăŻă§ăăžăăă ďźăăăŻç§ăŽĺ´ă§ăćŁăăç解ă§ăăďźďź
ăăă¤ăăŽăăăĽăĄăłăă¨ăłăĄăłăăšăŹăăă調ăšăžăăăăçšăŤUnpinnableă¸ăŽĺç §ăŻčŚă¤ăăăžăăă§ăăă
ĺşĺŽč§Łé¤ăŻăä˝ăŤĺŻžăăŚăçăăăŽă§ăŻăăăžăăă ĺ¤ăăŽăŚăźăśăźăŤăŻćăăă§ăŻăŞăă¨ćăăžăăăćŹĺ˝ăŽăă¨ăŽ1ă¤ăŻăć¨ćşăŠă¤ăăŠăŞăšăżă¤ăŤăŹă¤ăă§ăŻă形厚čŠă§ăŻăŞăăçšć§ĺă¨ăăŚĺčŠăĺŞĺ
ăăăă¨ă§ăăăăăăŁăŚă Sendable
ă§ăŻăŞăSend
ă Sendable
ă ăăăŻĺŽĺ
¨ăŞä¸č˛Ťć§ă§éŠç¨ăăăŚăăžăăăăăăăŻć¨ćşă§ăă Unpin
ăŻăăĺşĺŽă解é¤ăăăăŽĺ ´ĺă¨ĺăă§ăăăăăŻăĺşĺŽăăPin
ăăăăŽăżă¤ăăŽĺşĺŽă解é¤ă§ăăăăă§ăă
Move
ďźă秝ĺĺŻč˝ăă§ăŻăŞăăă¨ăčŚăăŚăăăŚăă ăăďźăŽăăăŞĺĺăŻăĺä˝ăăŤćĽçśăăăŽă§ăŻăŞăă秝ĺă§ăăăă¨ăŤé˘äżăăŚăăăă¨ăćĺłăăăăă Unpin
ăăăć確ă§ăŻăăăžăăăăăłăżă¤ăă Rustă§ăŻäťťćăŽSized
ĺ¤ă秝ĺă§ăăăăă !Unpin
ăżă¤ăă秝ĺă§ăăžăă
ç§ă示ĺăăăăăŤăăŹăźăşĺ ¨ä˝ă§ăăĺĺăŻăstdăŤă¨ăŁăŚé常ăŤĺ調ă§ăă
ăăăŻçăăă¨ă§ăŻăŞăăăăăăžăăăăăăăŻăžăăŤç§ăăăăčŞăă ćšćłă§ăă çšć§ăŻĺčŠă§ăăăăăĺăŽćä˝ă§ăŻăŞăĺă誏ćăăăăăŤä˝żç¨ăăĺ ´ĺăŻăćĺă§ĺ˝˘ĺŽščŠăŤĺ¤ćăăĺż
čŚăăăăžăă std::iter::Iterator
ăŻĺ垊ĺŻč˝ăŞăăŽăŤăăŁăŚĺŽčŁ
ăăă std::io::Seek
ăŻăˇăźăŻĺŻč˝ăŞăăŽăŤăăŁăŚĺŽčŁ
ăăă std::pin::Unpin
ăŻĺşĺŽă§ăăŞăăăŽăŤăăŁăŚĺŽčŁ
ăăăžăă
@withoutboatsĺčŠăŽĺéĄăăŞăäťăŽĺĺăăă¨ăă°Escape
ăEscapePin
ăŤé˘ăăçšĺŽăŽĺéĄăŻăăăžăăďź ăăŽč°čŤăŻäťĽĺăŤčĄăăăăă¨ăç解ăăŚăăžăăăăăăăăäťăŻăăŁă¨ĺ¤ăăŽćł¨çŽăéăžăŁăŚăăăŽă§ăĺŽĺ
¨ăŤĺéˇăŞĺăăăˇăĽă§ăăăăŠăăăŻăăăăžăă...
ç§ăŻćŹĺ˝ă ă¨ćăăă¨ăŽä¸ă¤ăŻăăăŽä¸ĺš¸ăŞăă¨ă¨ăăăă¨ă§ăăPin
ă¨Unpin
ăăă¨ăăďźăăă¤ăăŽç¨ŽéĄăăăăłăă§ăăăä¸é¨ăŤăŻăăăłč§Łé¤ăăăăŚăăďźăŽăă˘ă¨ăăŚčŞăżĺăăă¨ăă§ăăPin
ăŻăĺčŠă§ăŻăŞăĺčŠă§ăăă¨ćłĺŽăăăŚăăžăă Pin
ăçšć§ă§ăŻăŞăă¨ăăäşĺŽăŻăăăžăăăă°çŠäşăćăăăŤăăžăă Pinning
ăćŻćăăč°čŤăŻçăŤăăŞăŁăŚăăžăăăăăă§ăŻĺĺăŽéˇăăŽĺéĄăŤç´é˘ăăžăă çšăŤăăĄă˝ăăăŹăˇăźăăźăŻself
2ĺçš°ăčżăĺż
čŚăăăăăăĺ¤ăăŽćĺă襨示ăăăžăďź self: Pinning<&mut Self>
ă Pinning<P>
ăPin<P>
čś
ăă4ćĺĺ
¨ä˝ăŽć確ăă§ăăă¨ăŻç˘şäżĄăăŚăăžăăă
@tikue ăă¨ăšăąăźăăă¨ăăç¨čŞăŻăăăłçăăăăăŻăăăŤéč˛ čˇă§ăăăă¨ăšăąăźăĺćăŞăŠăŽćŚĺżľă¨ççžăăŚăăžăă
ăžăăç§ăăĄăŻăă§ăŤăăŽäźčŠąăăăŚăăŚăăăłă¨ăăłăĺ¤ăă¨ăăćąşĺŽăŤéăăžăăăăăăŚăăŽăšăŹăăă§ć辡ăăăč°čŤăŻăŠăăć°ăăăăŽă§ăŻăăăžăăă
ăăăŻç§ăééăŁăćšćłă§ăăăăžă-ăłăăĽăăăŁăŽçľé¨ĺ ąĺăŻćăžăăăăăžăăăďź ĺäşşçăŤăŻăăăŽăšăŹăăăŽäťăŽăłăĄăłăăŽăăă¤ăă¨ă Pinned
äşéĺŚĺŽă¨ăŽä¸Śç˝Žăžă§ă Unpin
ć確ăŞĺéĄăŻčŚăăăžăăă§ăăă
RustăŻă¨ăšăąăźăĺćăĺŽčĄăăŞăăŽă§ăăăăćŹĺ˝ăŽĺéĄă§ăăăăŠăăăŻăăăăžăăă
ăăăçé¸ăăĺăŤăhttpsďź//github.com/rust-lang/rust/issues/55766#issuecomment-438316891ă§ćŚčŞŹăăăŚăăăăăĽăĄăłăăŽćšĺăĺźăçśă確čŞăăăă¨ćăăžă:)
https://github.com/rust-lang/rust/pull/55992ăéăăŚăä¸č¨ăŽăăăĽăĄăłăăčż˝ĺ ăă Pinned
ĺĺăPhantomPinned
ă
Pinned
ďźăăăłPhantomPinned
ďźăŻăăĺşĺŽăăăăĺ¤ăPin
ăă秝ĺă§ăăŞăĺ¤ă¨ăăŚćŚĺżľĺăăăă¨ăć¨ĺĽ¨ăăă¨ćăăžăăă¤ăžăă Pin
ĺ
ăŽĺ¤ăăŽĺ¤ăćĺłăăžăă Unpin
ăćĺłăăăăŽďźăŻăĺşĺŽăăăăŚ
ăăăŻç´ăăăăăăă§ăă ç§ăŻăăăăç°ĄĺăŤăăšăŚăŽĺ¤ăćŚĺżľĺăăăăăŤčŚă¤ăăPin
ĺşĺŽă¨ăăŚă彟ăăŻăŤăăéPin
äşăŻäťĽĺăŽĺĺä˝ăăăăăă¤ĺşĺŽăăăŚăăăăŠăăăŻăć°¸äš
çă§ăăPinned
ăłăłăăăźăŤă Pin*
ă¨ăŻĺĽăŽĺĺă使ç¨ăăă¨ă2ă¤ăŽç°ăŞăćŚĺżľăŽćˇˇĺăé˛ăăă¨ăă§ăăžăă
PhantomNotUnpin
ďźP
ĺäşşçăŤăŻăĺĺă¨ăăŚăŽUnpină大ĺŤăă§ăăăăăăăănot-un-pinăă¨čĄ¨ç¤şăăăăăă¤ăăŽăăŹă¤ăłăľă¤ăŻăŤăĺż čŚă¨ăăimplďźUnpină¨čŚăŞăăăăă¨ăĺ¤ăăăă§ăă
ăăăă¨ăďź ăžăăăăăăççąăćŁç˘şăŤçšĺŽă§ăăŞăăŁăăăăăăŞăéˇăéUnpin
ăŤćŠăžăăăŚăăžăăă äťăç§ăŻç解ăăŚăăă¨ćăăžăďźăăăŻäşéĺŚĺŽă§ăă
ăăăŻç§ăŽçľé¨ă¨ăŻćŁĺ寞ă§ăćĺă§ĺŽčŁ ăăžăăďźUnpinăŻăé常ăŤăăăăŞăŚăźăšăąăźăšă§ăăĺŽĺ ¨ă§ăŞăăłăźăă使ç¨ăăŚćĺă§čŞĺˇąĺç §ć§é ăĺŽčŁ ăăŚăăăă¨ăćĺłăăžăă ĺŻžç §çăŤăć˝ĺ¨çăŤăăłăĺ¤ăć§é ä˝ăăă¤ăłăżăźăŽĺžăăŤäżćăăăăŽăŻăăšăŚăăăłăĺ¤ăă¨ăăćŁăŽćĺłăćăĄăžăă ăă¨ăă°ăstdăŽUnpinăŽĺŽčŁ ăŻăăšăŚćŁćĽľć§ă§ăă
ăăăăăăăŻĺŽčŁ
ă ăă§ăŞăăč°čŤăŤă¤ăăŚăă§ăă impl !Sync
ăŻăăŞăăžăă§ăăďźä¸ĺŽĺŽăŞăăĺçŹă§ăŻăăăžăăďźă Sync
ăăăł!Sync
ăżă¤ăăŤă¤ăăŚčŠąăăă¨ăŻé常ăŤä¸čŹçă§ăă ĺć§ăŤă !Unpin
ăŻăĺ°ăŞăă¨ăç§ăćăŁăŚăăăăŽćŠč˝ăŽč°čŤă§ăăŞăĺ¤ăĺşăŚăăžăăă
ç§ăăăăăăăŁăçŠćĽľçăŤčĄ¨çžăăăăŽďź MoveFromPin
ç¨ĺşŚďźă弽ăżăžăă Pin
ă¨ăŻç°ăŞăăăăŽçšć§ăăăăťăŠé ťçšăŤč¨čż°ăăĺż
čŚăăŞăăăăäşşé塼ĺŚăŤĺŽĺ
¨ăŤç´ĺžăăŚăăăăă§ăŻăăăžăăă
RustăŻă¨ăšăąăźăĺćăĺŽčĄăăŞăăŽă§ăăăăćŹĺ˝ăŽĺéĄă§ăăăăŠăăăŻăăăăžăăă
LLVMăŻăăăăăŽă§ăă¨ăšăąăźăĺćăŻäžçśă¨ăăŚRustăŤé常ăŤé˘éŁăăŚăăžăă
ăăă解湺ăăćšćłăŻă Pin
/ Unpin
ăŽćĺłăéăŤăăĺčŞăé¸ăśăă¨ă§ăă ăă¨ăă°ă Unpin
ĺĺăRelocate
ăžăă 揥ăŤă !Unpin
ăŻ!Relocate
ăžăă ăăăŻç§ăŤă¨ăŁăŚăŻăăăŤç´ćçăŞćĺłăăăăžă-ç§ăŻăăăăăăăăăŽăżă¤ăăŽăŞăă¸ă§ăŻăăŻĺé
罎ă§ăăŞăăă¨čŞăżăžăăă ĺĽăŽĺčŁăŻMovable
ă§ăă
Pin
罎ăćăăăă¨ăă§ăăĺ寞ăŽč¨čăä˝ă§ăăăăăžăăŻĺż
čŚă§ăăăăŠăăăŻăăăăžăăă ăăăăç§ăŻç˘şăăŤăăăĽăĄăłăă揥ăŽăăăŞăă¨ăč¨ăŁăŚăăăă¨ăćłĺăăăă¨ăă§ăăžăăďź
ĺşĺŽăăăăŞăă¸ă§ăŻăăŻăăŞăă¸ă§ăŻăăăĄă˘ăŞăŤĺé 罎ă§ăăĺ ´ĺăŤéăă
DerefMut
ăäťăăŚç´ćĽĺ¤ć´ă§ăăžăăRelocate
ăŻčŞĺçšć§ă§ăăăăăăŠăŤăă§čż˝ĺ ăăăžăă ăă ăăĺ¤ăäżćăăăĄă˘ăŞă¸ăŽç´ćĽăă¤ăłăżăăăĺ ´ĺăŻăăżă¤ăăŤimpl !Relocate
ăčż˝ĺ ăăŚăRelocate
ăŞăăă˘ăŚăăăŚăă ăăă
impl<T: Relocate> DerefMut for Pin<T> { ... }
ăăăŻă Unpin
ăăăăŻăăăŤç´ćçăŤç解ă§ăăžăă
ä¸č¨ăŽăăăĽăĄăłăăčż˝ĺ ăăăăăŤďź55992ăéăăžăă
ăă ăăăăăŻhttps://github.com/rust-lang/rust/issues/55766#issuecomment-438316891ă§ććĄăăăăăŽăŽä¸é¨ăčż˝ĺ ăăă ăă§ăă
ç§ăŻMoveFromPin
ććĄă弽ăă§ăă Relocate
ăčŻăă§ăăăăăăăPin
ĺĺăŤé˘éŁäťăăăăŚăăžăăă ĺăłăăăĺăăăŞăăżă¤ăă¨ăăŚç解ăăăă¨ăă§ăăžăăďźăăă§ăŻăăăžăăďźă RelocateFromPin
ăčŻăă§ăăăă
Escape
ingăŻăăă¨ăă°Swiftă§ăŻăăźă¸ăŁăŤé˘éŁäťăăăăŚăăăăŽă§ăăăçžĺ¨ăŽăłăźăŤăă§ăźăłăŽĺ
ĺ´ăžăăŻĺ¤ĺ´ăŽăŠăĄăă§ĺźăłĺşăăăŚăăăă示ăăžăă ăăăŻčŞ¤č§ŁăćăăăăŤčăăăžăă
ăăăăăăăăéăăéˇăĺĺă§ĺéĄăŻçşçăăžăăă
FWIWć缨ăčĄăă Unpin
ĺĺăRelocate
ăMoveFromPin
ăŞăŠăŽăăă¸ăăŁăăăŞĺĺăŤĺ¤ć´ăăăă¨ćăăžăďźăžăăŻăăăŤĺéˇă§ăăăăăăăĺ°ăćŁç˘şăŞMayMoveFromPin
ďźă
ç§ăŻăŽäşéĺŚĺŽăă¨ăŤĺć!Unpin
ăžăăŻăĄăăăŠUnpin
ćŁă§ĺ˛ăžăăć´ĺ˛çăŤç§ăŤćˇˇäšąăăŚăăăă¨ä˝ăăăăăăŻĺ
é¨ă§ăăăŤăé˘ăăă秝ĺăăăă¨ăă§ăăžăPin
ă¨ćăăžăă桡䚹ăĺăăăăŽăŤĺ˝šçŤăĄăžăďź
FWIWćĺăŻUnpin
ăŤă¤ăăŚĺăăă¨ăčăăŚăăžăăăăĺŽéăŤIMOă使ç¨ăăăăăŤăŞăŁăă¨ăăăăăŻçăŤăăŞăŁăŚăăžăăć˘ăăŚăăćä˝ăŻUnpin
ćŠč˝ă§ăăăăăĺŽéăŤăŻäşéĺŚĺŽă§ăŻăăăžăăă Pin
ăŤä˝ăăčŞçąăŤĺşăĺ
Ľăăăďźă§ăŻăŞăăçŠäşăăăłă§çăăćŠč˝ă§ăŻăăăžăăă MoveFromPin
ă¨ĺăă§ăăăč¨ăćšăç°ăŞăăžăă ă Pin
ă§ăŻăŞăăăŞăŠă¨ćăăăŞăĺĺăăăăŽă§ăăăIMO MoveFromPin
ăŞăŠăŻč¨čăĺ¤ăăăžăă UndoPin
ďź ďźăăšăąăŤăŽçž¤čĄăŽăăăŤFreePin
ďźďź
ç§ăŻăžă !Unpin
ĺĽĺŚăŤčŞăăă¨ćăăžă-ç§ăŻăăăăăăăĺşĺŽč§Łé¤ăăŞăă§ăă ăăďźăăŽăăăŤćąăăăăŤç§ăŽĺ
ăŞă声ăč¨çˇ´ăăžăăă é常ăŽă Unpin
ĺŽčŁ
ăăŚăăžăăăăŽäťŁăăăŤăĺ°ăćéăăăăăžăă
!Pluck
ăŠăă§ăăďź
@runiq
é常ăŽăĺşĺŽč§Łé¤ăĺŽčŁ ăăŞăăăŽäťŁăăăŤ
䝼ĺăŽăłăĄăłăă§ăăăŤă¤ăăŚč¨ĺăăžăăăăăăăŻĺŽéăŤăŻčŻăč¨ăćšă ă¨ćăăžăă Unpin
ăŻă Pin<C<_>>
ăĺşăĺ
Ľăăăćä˝ă§ăă Unpin
ĺŽčŁ
ăăŚăăŞăăăŽăŻăăăŽćŠč˝ăćäžăăžăăă
@cramertjç§ăŻUndoPin
ă¨ăŚă弽ăă§ă
@cramertjç§ăŻăăăžă§ăŤććĄăăă䝣ćżćĄăŽĺ¤§ăăĄăłă§ăŻăŞăăă¨ăŤĺćăăžăăăĺäşşçăŤăŻMoveFromPin
ăăăUnpin
MoveFromPin
ă¨ăăč¨čă弽ăă§ăăăă ăăăăăăŤăăŹăăŁăă§ăŻăŞăăŽăŻčŻăçšă§ăăăăăăčŞăă§ăăă¨ďźăžă 1ăăłă使ăŁăŚăăŞăäşşă¨ăăŚďźăăăăŤăăŹăăŁăă ă¨ç§ăă¤ăžăăăçśăăžăă ăUnăăăŹăăŁăăŻăšăč˛ ă¨ăăŚčŞăżčžźăăă¨ăăŚăăžă...
ç§ăŻčĺłăăăăžăăă @ cramertjăžăăŻäťăŽäşşăŻăäşşé塼ĺŚçăŤăă¤ăłăăăăUnpin
ăŠăă ăçşçăăăăŤă¤ăăŚăéŠĺăŞăăłăăŤăăăă¨ćăăžăăďź čś
ăŹă˘ă§ăăďź ăăăŻčś
ä¸čŹçă§ăăďź ĺ
ĽĺăăăŽăčŚçă ă¨ăăăăčŚçăŤăŞăăťăŠä¸čŹçă§ăăďź
çăăŚçăĺĺăŽĺ ´ĺăç§ăŻĺäşşçăŤRelocate
ă˘ă¤ăă˘ă弽ăă§ăăăéˇăăŚč¨čăŽĺ¤ăĺĺăŽĺ ´ĺăŻăăżă¤ăăăŞăăŽă§ĺ¤§ä¸ĺ¤Ťă§ăă MoveFromPin
弽ăă§ăă Unpin
ăăăĺŞăăŚăăă¨ćăăŚăăžăă
ç§ăŻčĺłăăăăžăăă @ cramertjăžăăŻäťăŽäşşăŻăäşşé塼ĺŚçăŤăă¤ăłăăăă
ç§ăŽçľé¨ă§ăŻă Unpin
ĺŽéăŤăŚăźăśăźăłăźăăŤčĄ¨ç¤şăăă2ă¤ăŽăąăźăšăăăăžăă
Unpin
ĺ˘çăçşçăăăŽăŻăăăźăŞăłă°ăăă¨ăăŤĺŽéăŤćŞćĽă秝ĺăăĺż
čŚăăăăăă§ăďźăă¨ăă°ăä¸é¨ăŽé¸ćăăăAPIăŞăŠďźăUnpin
çĄćĄäťśăŽĺŽčŁ
ăčż˝ĺ ăăĺż
čŚăăăăžăăăăăŻăäťăŽăżă¤ăăUnpin
ăăŠăăăŻé˘äżăŞăăăă§ăăăăăăŤăăă¸ă§ăŻăăĺşĺŽăăžăă2çŞçŽăŽăąăźăšăŽäžăŻăăă税ăŽăăăăĄăżă¤ăyoure generic overďź T: AsRef<[u8]>
ďźăăăĺ ´ĺă§ăă ăšăŠă¤ăšăĺăĺşăăăăŤăăłçăăăĺż
čŚăŻăŞăăŽă§ă Unpin
ĺŽčŁ
ăăăăŠăăăŻć°ăŤăăŞăăŽă§ăăżă¤ăăçĄćĄäťśăŤUnpin
ĺŽčŁ
ăăă¨č¨ăăăăŽă§ăĺŽčŁ
ă§ăăžăă Future
ăăłçăăçĄčŚăăžăă
Unpin
ăŻăĺ˘çă¨čŚăŞăăăăŽăăăŞăä¸čŹçă§ăă select!
ă StreamExt::next
ăăăăłăăŽäťăŽăłăłăăăźăżăŻăăšăŚăćä˝ăăĺăUnpin
ăžăă
@withoutboatsăăăŤăăăăŞăăŽăă¤ăłă2ăŤčĺłăăăăžăă impl Unpin
ăŻăäşşă
ăé ťçšăŤĺŽčŁ
ăăăă¨ăčŚăăŚăăĺż
čŚăăăăăŽă ă¨ćăăžăăďź äťćĽăŽĺłć¸é¤¨ăŽä˝č
ăăŤăšăżă ăżă¤ăăŽ#[derive(Debug)]
ăžăăŻimpl std::error::Error
ăĺżăăăă¨ăĺ¤ăăŽă¨ĺć§ăŤăăăăăŽĺłć¸é¤¨ă使ç¨ăăăŽăéŁăăăŞăŁăŚăăžăăďź
ĺşĺŽč§Łé¤ăŻčŞĺçšć§ă§ăă unpinăĺŽčŁ ăăŞăĺăăăăŽăŻăăăŽĺăć示çăŤăŞăăă˘ăŚăăăă¨ăă ăă§ăă ďźăžăăŻăĺşĺŽč§Łé¤ăăŞăăă˘ăŚăăăăăŁăźăŤăăĺŤăžăăŚăăžăďźă
ç§ăŻăăăäşĺŽă§ăăăă¨ăç解ăăŚăăžăă ăăăŚăăăăćăä¸čŹçăŞăąăźăšă§ăăă¨ćăăžăăăăăŽăăă @ withoutboatsă2çŞçŽăŽăă¤ăłăăŤă¤ăăŚăč¨ĺăăŚăăăă¨ăŤéŠăăžăăă ăăăŻç§ăĺ˝ĺčăăŚăăăăăä¸čŹçăăăăăŞăăă¨ăç§ăŤç¤şĺăăŚăăăŽă§ďźăăăăăăŞăčŞčşŤăŽćŞćĽăĺŽčŁ ăăă¨ăă ăă§ăăďźăç§ăŻăăŽăăăŞç¨ŽéĄăŽăŚăźăšăąăźăšăŽé ťĺşŚăŤčĺłăăăăžă:)
@alexcrichtončĺłăăăăžăăă @ cramertjăăăŽäťăŽäşşăŻăäşşé塼ĺŚçăŤăă¤ăłăăăă
ç§ăŻčŞĺăŽăłăźăăFutures0.3ďź Pin
ă使ç¨ďźăŤç§ťć¤ăăçľé¨ăŤă¤ăăŚéˇăć稿ăć¸ă
Unpin
ăŻăťă¨ăăŠăăšăŚăŽăżă¤ăă§čŞĺĺŽčŁ
ăăăăăăăťă¨ăăŠăŽĺ ´ĺă Unpin
ăŤă¤ăăŚĺżé
ăăĺż
čŚăŻăăăžăăă
ăăăăŁăŚă Unpin
ăŤă¤ăăŚĺżé
ăăĺż
čŚăăăăŽăŻćŹĄăŽĺ ´ĺă ăă§ăă
äťăŽăżă¤ăăăăä¸čŹçăŞăżă¤ăăăăăžăďźäžďź struct Foo<A>
ďźă
ăăăŚăăăŽăżă¤ăăŽăăłçăAPIďźăă¨ăă°ă Future
/ Stream
/ Signal
ďźăĺŽčŁ
ăăĺż
čŚăăăăžăă
ăăŽĺ ´ĺăăăă使ç¨ăăĺż čŚăăăăžăďź
impl<A> Unpin for Foo<A> where A: Unpin {}
ăžăăŻăăďź
impl<A> Unpin for Foo<A> {}
impl<A> Future for Foo<A> where A: Unpin { ... }
ăăăŻé常ă Unpin
ăĺż
čŚăŞĺŻä¸ăŽçśćłă§ăă ă茧ăŽă¨ăăăăăăŻé常ăăżă¤ăăă¨ăŤUnpin
ç´2ĺ使ç¨ăăĺż
čŚăăăăă¨ăćĺłăăžăă
éăłăłăăăźăżăŽĺ ´ĺăăžăăŻFuture
/ Stream
/ Signal
ĺŽčŁ
ăăŞăĺăŽĺ ´ĺăŻă Unpin
ă使ç¨ăăĺż
čŚăŻăăăžăăăăžăŁăă
ăăăăŁăŚă Unpin
ăçşçăăăă¨ăŻăăŁăăŤăŞăăĺŽéăŤăŻFuture
/ Stream
/ Signal
ăłăłăăăźăżăä˝ćăăçśćłă§ăŽăżçşçăăžăă
ă ăăç§ăŻMoveFromPin
ăăăŞĺĺă埡ăćŻćăăŚăăžăă ĺşĺŽăŻăăťă¨ăăŠăŽäşşă寞ĺŚăăĺż
čŚăŽăŞăăăăăŞćŠč˝ă§ăăăăăĺĺăŽéˇăăé庌ăŤćéŠĺăăĺż
čŚăŻăăăžăăă
ăžăăŞçśćłă§ć°ćĺăçŻç´ăăăăăăčŞçĽçĺŠçšďźäşéĺŚĺŽăĺéżăăďźăŽćšăăŻăăăŤéčŚă ă¨ćăăžăă
çšăŤăăăłçăăŻăă§ăŤç解ăăăŽăŤĺĺéŁăăăăă§ăďź ă§ăăăăä¸ĺż čŚăŤéŁăăăăŞăăăăŤăăžăăăă
@jonhoo
impl Unpin
ăŻăäşşă ăé ťçšăŤĺŽčŁ ăăăă¨ăčŚăăŚăăĺż čŚăăăăăŽă ă¨ćăăžăăďź äťćĽăŽĺłć¸é¤¨ăŽä˝č ăăŤăšăżă ăżă¤ăăŽ#[derive(Debug)]
ăžăăŻimpl std::error::Error
ăĺżăăăă¨ăĺ¤ăăŽă¨ĺć§ăŤăăăăăŽĺłć¸é¤¨ăŽä˝żç¨ăéŁăăăŞăŁăŚăăžăăďź
impl Unpin
ăĺżăăăă¨ăŻă§ăăŞăă¨ćăăžăăä˝ćč
ăĺżăăă¨ăăłăłăă¤ăŠă¨ăŠăźăçşçăăćĺăăăŻăŹăźăăĺ
ŹéăăăŞăăŞăăăă§ăă ă¤ăžăă #[derive(Debug)]
ăŻăžăŁăăç°ăŞăăžăă
@withoutboatsă芹ăăŚăăçśćłăŻă Future
/ Stream
/ Signal
ăłăłăăăźăżăĺŽčŁ
ăăŚăăäşşă ăăŽăăŽă§ăăăäťăŽäşşăŤăŻĺ˝ąéżăăžăăďźçšăŤă役éżăăžăăďźăŠă¤ăăŠăŞăŽăăŚăłăšăăŞăźă ăŚăźăśăźďźă
ďźäşéĺŚĺŽăŻăăŽä¸é¨ă ă¨ćăăžăăăăăăăĺłĺŻăŤĺż čŚăŞăăŽăăăĺŚĺŽçăŞăăŽăăăăăăăăžăăăăăăă ăă§ăŻăŞăă¨ćăăžăďźăăă§ĺ çăăăă¨ăăŚăăžăďź...ăĺşĺŽč§Łé¤ăăŻĺ°ăă§ăăćŻĺŠçďźéćĽçďźčŞŹćăăă¨ćĺłăăăăăĺşĺŽăčŞä˝ăŻăă§ăŤćŻĺŠă§ăăăăăăŞăç§ăŽčłăăăŽćŻĺŠăăăăŤĺăĺ Ľăăăă¨ăŤĺéĄăăăăŽăââăŻćăăă§ăŻăăăžăăăăăăăŤăăăăăăăç§ăŽčłăŻä˝ăăăŽççąă§ăĺşĺŽă解é¤ăăăă¨ăăăăžăăŤăŞăăăăŁăăă¨ĺşĺŽăăăŽăĺ°éŁăŤăŞăăžăăďź
ăăŞăăŻćŁăă@cramertjă ă¨ćăăžăăé常ăŽćĺłă§ăŻĺŽéăŤăŻäşéĺŚĺŽă§ăŻăăăžăăăă @ alexcrichtonă@glaebhoerlăŽăăăŤăç§ăŻăăăŤă¤ăžăăçśăăžăă ćĽé čŞă¨ăăŚăćŞăăŻăăăăŤé常ăŤĺŚĺŽ-yăŽćčŚďźăĺŽĺ ¨ă§ăŞăăăăćŞĺŽčŁ ăă¨ăăăăăŤăç§ăŻé常ăăăŽćĽé čžăçşçăăăă§ăăďźăćăăŚăăăăăăĺŻä¸ăŽĺčŠă¨ăăŚăŞăă°ăăăă§ăŽăăăłă°ĺŚĺŽăăăžăă
@withoutboatsăăăŤăăăăŞăăŽăă¤ăłă2ăŤčĺłăăăăžăă impl UnpinăŻăäşşă ăé ťçšăŤĺŽčŁ ăăăă¨ăčŚăăŚăăĺż čŚăăăăăŽă ă¨ćăăžăăďź äťćĽăŽăŠă¤ăăŠăŞä˝ćč ăăŤăšăżă ăżă¤ăăŽďź[deriveďźDebugďź]ăžăăŻimpl std :: error :: Errorăĺżăăăă¨ăĺ¤ăăŽă¨ĺć§ăŤăăăăăŽăŠă¤ăăŠăŞăŽä˝żç¨ăéŁăăăŞăăžăăďź
羜寞éăďź ăŚăźăśăźăĺ°ćĽă§ăŻăŞăä¸čŹçăŞFuture
ăćĺă§ĺŽčŁ
ăăŚăăĺ ´ĺăĺŽĺ
¨ă§ăŞăăłăźăăč¨čż°ăăăŤăă¤ăžăPin<&mut Self>
ăĺŚçăăăăăŤăĺ°ćĽăŽĺŽčŁ
ă§çść
ăĺ¤ć´ă§ăăăăăŤăăăă¨ćăă§ăăăă &mut self
ă MyFuture<T: AsRef<[u8]>>
ăUnpin
ĺŽčŁ
ăăŚăăŞăăă¨ă示ăă¨ăŠăźăçşçăăžăă ăăŽĺéĄăŽćĺăŽč§ŁćąşçăŻă Unpin
ăĺŽčŁ
ăăăă¨ă§ăă ăăăăăăăä¸ăăĺŻä¸ăŽĺ˝ąéżăŻă Future
ăĺŽčŁ
ăăăă¨ăăŚăăăŚăźăśăźăŤăăăăłăźăăăłăłăă¤ăŤăăăŞăăăăĺżăăăă¨ăŻă§ăăžăăă
@withoutboatsă芹ăăŚăăçśćłăŻăFuture / Stream / SignalăłăłăăăźăżăĺŽčŁ ăăŚăăäşşă ăăŽăăŽă§ăăăäťăŽäşşăŤăŻĺ˝ąéżăăžăăďźçšăŤăăŠă¤ăăŠăŞăŽăăŚăłăšăăŞăźă ăŚăźăśăźăŤăŻĺ˝ąéżăăžăăďźă
ç§ăŻçšăŤăă¸ă§ăăŞăăŻăUnpin
ăŞăăŚăă Unpin
ĺ
ćŹçă¤ăłăăćăŁăŚăăăŻăăŽéăłăłăăăźăżă¸ă§ăăŞăăŻćĺĺ
çŠăŤă¤ăăŚčŠąăăŚăăžăă
ăćĺăŽăăĽăźăăŁăź/ăšăăŞăźă ăĺŽčŁ ăăă¨ăăŤăăłçăăčĄăăŤăŻăŠăăăă°ăăă§ăăďźăă¨ăă質ĺăŽăăăźăăŁăźăăä˝ćăăžăăă
ăăĺ°ăčŞčť˘čťăŤäšăăăăŤăäťćĽăŽćźéŁćăŤç§ăŻLeavePin
ăćăă¤ăăă ăăăŻăćéťăŽčŞ¤č§ŁăćăăťăăłăăŁăŻăšăŞăă§ă escape
ă¨ĺăăăźăłăéăłăžăă
ç术ă¨ĺć§ăŤă implăšăăˇăŁăŠă¤ăźăźăˇă§ăłă¨ăăłăŽéăŤčĺłćˇąăç¸äşä˝ç¨ăŻăăăžăăďź
é¨ĺćĺĺăspecializăăŻăĺéĄăŽč°čŤă
@viăŻăĺĽĺ ¨ć§ăŽç¸äşä˝ç¨ăăŞăă ăă§ăŞăăĺĽĺ ¨ć§ăŽç¸äşä˝ç¨ăăăĺŻč˝ć§ăăăăžăăă pin APIăŻć¨ćşăŠă¤ăăŠăŞă§ĺłĺŻăŤĺŽçžŠăăăŚăăăć°ăăč¨čŞćŠč˝ăŻĺŤăžăăŚăăžăăăăŚăźăśăźăŻăľăźăăăźăăŁăŽăŠă¤ăăŠăŞă§ăĺăăăăŤç°ĄĺăŤĺŽçžŠă§ăăžăă ăăŽăŠă¤ăăŠăŞăłăźăăĺĺ¨ăăăŤăăăăăăč¨čŞćŠč˝ăä¸ĺĽĺ ¨ă§ăăĺ ´ĺăăăăŻä¸ĺĽĺ ¨ăŞćéă§ăăăăăŻăăăšăŚăŽăŚăźăśăźăäťćĽăăŽăŠă¤ăăŠăŞăłăźăăč¨čż°ă§ăăćŁĺ¸¸ăŤăłăłăă¤ăŤăăăăăă§ăă
ăăŽăŠă¤ăăŠăŞăłăźăăĺĺ¨ăăăŤăăăăăăč¨čŞćŠč˝ăä¸ĺĽĺ ¨ă§ăăĺ ´ĺăăăăŻä¸ĺĽĺ ¨ăŞćéă§ăăăăăŻăăăšăŚăŽăŚăźăśăźăäťćĽăăŽăŠă¤ăăŠăŞăłăźăăč¨čż°ă§ăăćŁĺ¸¸ăŤăłăłăă¤ăŤăăăăăă§ăă
pin
ăŤé˘äżăăăăŻăă§ăŻăăăžăă...ăăăăç§ăŻăăăăăăťăŠĺç´ă§ăŻăŞăă¨ćăăžăă
ăŠă¤ăăŠăŞćŠč˝ăunsafe
ă使ç¨ăăŚăăă¨ăăŤăĺä˝ăăžă ćĺŽăăăŚăăŞăč¨čŞć§é ă使ç¨ăăŚăăĺ ´ĺďźăă¨ăă°ă &packed.field as *const _
ăăžăăŻABIăŤé˘ăăăăžăăžăŞäťŽĺŽăčĄăŁăŚăăĺ ´ĺďźăčż˝ĺ ăŽč¨čŞĺ¤ć´ăčĄăă¨ă䝎ĺŽăçĄĺšăŤăŞăăžăăăăăăŽăŠă¤ăăŠăŞăŽä¸ă§ăč¨čŞăŽĺ¤ć´ă§ăŻăŞăăä¸ĺĽĺ
¨ăŞăŠă¤ăăŠăŞă§ăăă¨ćăăžăă ä¸ćšăč¨čŞăŽĺ¤ć´ăŤăăŁăŚĺŽçžŠăăăĺä˝ăä¸ĺĽĺ
¨ăŤăŞăĺ ´ĺăăăăŻč¨čŞăŽĺ¤ć´ăŽăăă§ăă ăăăăŁăŚăĺŽĺ
¨ă§ăŞăč¨čŞăŽĺ¤ć´ăŤç´é˘ăăĺ ´ĺăćŁĺ¸¸ăŤăłăłăă¤ăŤăăăă¨ăŻăăŠă¤ăăŠăŞăŽĺĽĺ
¨ć§ăŤă¨ăŁăŚĺĺćĄäťśă§ăŻăăăžăăă
MoveFromPinăžăăŻĺć§ăŽăăŽăŤ+1
ăčŞĺăŽăżă¤ăăŽUnpinăăă¤ă˘ăłĺŽčŁ ăăĺż čŚăăăăžăăďźăă¨ăă質ĺăăăĺ ´ĺă䝣ăăăŤăčŞĺăŽăżă¤ăăŽMoveFromPinăăă¤ă˘ăłĺŽčŁ ăăĺż čŚăăăăžăăďźăă¨čłŞĺăăă¨ăçăăŻăŻăăăŤć確ăŤăŞăăžăă
ăăăăŤăă¤ăłăăăăçšć§ă¨ăăŚUnpinăčż˝ĺ ăăĺż čŚăăăăžăăďźăă¨ĺăă§ăă vsăăăăŤăă¤ăłăăăăăăŹă¤ăă¨ăăŚMoveFromPinăčż˝ĺ ăăĺż čŚăăăăžăăďźă
ĺşĺŽăŻăăăžăăďźç§ťĺ
ăăăăŠăăă§č¨ĺăăăŚăăăçłă訳ăăăžăăăăç§ăŻăăăŽăăłăŽĺ¨ăăĺŽčŁ ăŽĺéĄăăăăłRFCăŽĺéĄă§čĄăăăč¨ĺ¤§ăŞéăŽč°čŤăăăŁă¨čŚăă ăă§ăă
ăăłăŻăăăžă§ăŤăăăžăăďźç§ťĺăăžăăďź ç˘şăăŤăăŽăăăŞăŚăźăšăąăźăšăŻčŚăăăžăďźĺăăăŞăăżă¤ăă§čśłăćăăŞăćšćłăć˘ăăŚăăăŽă§ăăăłăć˘ăăŤćĽăžăăďźă çăăăăŻăăăŽĺ ´ĺăăăăŻăăłă¨ăŠăŽăăăŤç¸äşä˝ç¨ăăžăăďź ăăłăĺĺ¨ăăă¨ăďźMoveăčż˝ĺ ăăăăăéŁăăăŞăăžăăďź
ä¸č¨ăŽăăźă¸ăăĺžĺăŽăăćĺžăŽăłăĄăłăćéăĺŽäşăăžăăă
UnpinăŽĺ˝ĺăŤé˘ăăŚăŻćŞč§ŁćąşăŽć¸ĺżľăăăăŻăă§ăă
@RalfJungăććăăăăăŤăďź55992ăŻă httpsďź //github.com/rust-lang/rust/issues/55766#issuecomment-438316891ăŞăŠă§čŚćąăăăčż˝ĺ ăŽăăăĽăĄăłăăĺ°ăă ăčż˝ĺ ă
dropďźďźăĄă˝ăăăPină§ăŻăŞăďźmutselfăĺăĺăăŽăŻăŞăă§ăăă
ăăă§ăăădropďźďźăŻĺ¤ăăŽă§ďźRust 1.0䝼éăŤĺĺ¨ăăžăďźăĺ¤ć´ăăăă¨ăŻă§ăăžăăă Pin <ďźmut Self>ă使ç¨ăăăăăŤăăăă¨ćăăžăăăăăăă°ăUnpinăżă¤ăăŻçžĺ¨ăŽăăăŤďźmutăĺĺžă§ăăžăăăăăăŻä¸ä˝äşćć§ăŽăŞăĺ¤ć´ă§ăă
ăăŽĺ¤ć´ăä¸ä˝äşćć§ăŽăăćšćłă§ĺŽčŁ
ă§ăăăăŠăăçĺăŤćăăžăăă AIUIăŻUnpin
ăčż˝ĺ ăăăžă§ďźăăăŚäşşă
ăŻ!Unpin
ćĺŽă§ăăžăďźăăăšăŚăŽăżă¤ăăUnpin
ĺŽčŁ
ăăžăă ăăăăŁăŚăçšć§ăčż˝ĺ ă§ăăžăă
trait DropPinned {
fn drop(Pin<&mut> self);
}
揥ăŤăăăŽçšć§ăăăšăŚăŽUnpin
ăżă¤ăăŤĺŽčŁ
ăăžăăăăăŻăăŞăăă˘ăŚăă§ăăăăăŤăŞăăžă§ăŻăăšăŚăŽăżă¤ăă§ăă ä˝ăăŽăăăŞăăŽďź
impl<T> PinDrop for T where T:Unpin + Drop {
fn drop(Pin<&mut T> self) {
Drop::drop(self.get_mut());
}
}
ăăŽĺžăćă
ăŻăŤăăłăłăă¤ăŠćżĺ
Ľĺźăłĺşăăăăă ăăDropPinned::drop
ăŽäťŁăăăŤDrop::drop
ă ĺşćŹçăŤăăăŹă¤ăDropPinned
ăŻDrop
ă§ăŻăŞălang-itemăŤăŞăăžăă AFAICSăăăŻăăăŽăĄăŤăăşă ăUnpin
ă¨ĺćăŤĺ°ĺ
Ľăăăĺ ´ĺăŤăŽăżăä¸ä˝äşćć§ăăăăžăă
UnpinăŽĺ˝ĺăŤé˘ăăŚăŻćŞč§ŁćąşăŽć¸ĺżľăăăăŻăă§ăă
@tikue FCPăŽĺăžăăŻćä¸ăŤrfcbotăŤć¸ĺżľă襨ćăăăŠă¤ăăŠăŞăăźă ăĄăłăăźăŻăăžăăăăžăă Unpin
ăŤé˘ăăč°čŤăŻăăŽăšăŹăăăŤă¨ăŁăŚć°ăăăăŽă§ăćŹć°ăŞăăŽă§ăăŞăă¨ćăăžăăăăăăŁăŚăé常ăăăăťăšă§ăŻçžĺ¨ăŽăăĄă¤ăăŠă¤ăşăăăăźăăłă°ă ćăăăŤă誰ăăć¸ĺżľăćăŁăŚăăĺ ´ĺăŻă声ăä¸ăăĺż
čŚăăăăžăăăăăźă ăŽăă§ăăŻăăăŻăšăŽĺžăŤFCPăäťăăăă¨ăŽăă¤ăłăăŻăććĄăŠăăăŤAPIăĺŽĺŽăăăăăăŤĺ
¨ĺĄă忍éŠăŤéăăăăăăŤăăăă¨ă§ăă
@cramertjç§ăŻĺ°ă桡䚹ăăŚăăžăă ä˝äşşăăŽäşşă
ă声ăä¸ăăžăăă Unpin
ăŽĺ˝ĺăŤé˘ăăč°čŤăć辡ăăă解湺ăăăäťăŽĺ ´ćăŤă¤ăăŚăŽĺç
§ăćąăăă¨ăăç§ăŻhttps://internals.rust-lang.org/t/naming-pin-anchor-ăććăăăžăăUnpin
ăŽĺ˝ĺăŤă¤ăăŚä¸ĺšłăč¨ăäşşăăăŚăćŹĺ˝ăŽĺčŤăŻăăăžăăă https://github.com/rust-lang/rfcs/pull/2349ăŽĺ
ăŽRFCăŤăă Unpin
䝣ćżćĄăăŞăćŞăăŽăăŤă¤ăăŚăŽčŤççć šć ăŻăăžăăăăžăăă ăăŽăšăŹăăă§ăăĺŽéăŤĺşăŚăăĺčŤăŻăçăăă¨ăćčĄçăŤćŁăăăă ăăŽăăă§ăă ç解ăăăă䝣ćżĺďź MoveFromPin
ďźăč°čŤăăăćĺŚăăăĺ
ˇä˝çăŞč°čŤăććă§ăăžăăďź
䝼ĺăŽăłăĄăłăă§ăăăŽăšăŹăăă§ćŹć°ăŞčŚçšăćăĄä¸ăăŁăă¨ćăççąă誏ćăăžăăă ç§ăŻéĺ§äťĽćĽăăăłAPIăŽč°čŤăăăŞăçśżĺŻăŤčż˝čˇĄăăŚăăžăăăăăăŽăšăŹăăăŽĺăŤäşéĺŚĺŽăŽĺéĄăçşçăăăă¨ăčŚăăŚăăžăăă
@tikueç§ăć辡ăăäşéĺŚĺŽăŽĺéĄăä˝ĺşŚăć辡ăăăŚăăăŽăčŚăŚăăžăăă Unpin
ăŽćŁç˘şăŞĺ˝ĺăŻä˝ĺşŚăĺéĄă¨ăăŚć辡ăăă Unpin
ćŻćăăŚä¸č˛ŤăăŚč§ŁćąşăăăŚăăžăă Unpin
ĺĺăćăăăŤĺŤăžăăŚăăŞăä¸č¨ăŽĺŽĺŽĺććĄăŤĺćăăžăăćŞč§ŁćąşăŽčłŞĺă¨ăăŚăŽUnpin
ďźäťŁćżćĄăŤă¤ăăŚčŞŹćăăžăăăăăŽFCPăŻă Unpin
ă¨ăăĺĺăĺŤăăčĄăăăćąşĺŽăĺŽĺŽăăăćşĺăă§ăăŚăăăă¨ăćąşĺŽăăăăăŽăăăťăš
@cramertjăăŽč°čŤăčĄăăăĺ ´ćă¸ăŽăŞăłăŻăćäžăăŚUnpin
ăćŻćăăč°čŤăčŚăăă¨ćăăžăă ĺčż°ăŽăăăŤăăăăžă§ăŤćäžăăĺç
§ă§ăŻă Unpin
ĺ˝ĺăŤé˘ăă解湺çăŻćäžăăăŚăăžăăă
@ cramertj + 1ăă@jonhooăŽčłŞĺă ĺ ŹĺźăăŁăłăăŤăŤçťé˛ăăăŚăăŞălibsăăźă ĺ壍ăŽč°čŤăăăĺ ´ĺăŻăăăăăŽč°čŤăŽä¸ťăŞçŽçăăăă§çš°ăčżăĺż čŚăăăă¨ćăăžăă RFCăŽćąşĺŽăŻĺ ŹăŤçĽăăăŚăăč°čŤăŤĺşăĽăăŚăŽăżčĄăăă¨ăă§ăăă¨ăăĺ ŹĺźăŽčŚĺăăăăă¨ćăăžăăďź
RFCăŽćąşĺŽăŻĺ ŹăŤçĽăăăŚăăč°čŤăŤĺşăĽăăŚăŽăżčĄăăă¨ăă§ăăă¨ăăĺ ŹĺźăŽčŚĺăăăăă¨ćăăžăăďź
ăăăăăăŻćŹĺ˝ă -ăăăŚč¨é˛ăŽăăăŤăç§ăŻlibsăăźă ăŤăăŞăăŽă§ălibs-teamă ăăŽč°čŤăŤăŻĺĺ ăăŚăăžăăă RFCăšăŹăăăéăăŚăżăă¨ă Pin
追补ĺéĄăŻăăŽĺĺăä˝ĺăăăžăăUnpin
č˛ăŁăăă ăăăăŤăăŹăăŁăăă¨ăăč¨čăĺ
ˇä˝çăŤč¨ăäşşăŻčŞ°ăăăžăăăăă !Unpin
ăŻăăăŤăăŹăăŁăă§ăăă¨ăăč¨čăŤĺ ăăŚăă§ăăăă¨ăŽçšć§ăŤĺĺăäťăăă¨ăăä¸čŹçăŞAPIăŤăźăŤăčŚăăŚăăžăăăăăăç§ăŻĺ
ăŤććăăă¨ăăăŤďźăç§ăŻčăăăă¨ăă§ăăŞăăăŽăăăăăăăăăŠăUnpin
ăăăĺčŠă¨ăăŚăĺşĺŽč§Łé¤ăăčăăŽă§ăŻăŞă形厚čŠă¨ăăŚăăăčăĺż
čŚăĺŽçžăăŚăăĺŽéăŤăăăăŽčŚĺăŽä¸Ąćšă揥ăŽăăăłă§ăŻăŞăăăăăăŻäşşă
ăŤă¨ăŁăŚç´ćçă§ăŻăăăžăăďźă
äťäşăäžăă°ăăŞă@wmanley impl<T> Drop for Vec<T>
ăćă
ăćăŁăŚăăŞăăŽă§ăĺŁăăVec<T>: Unpin
ă ăžăăăăŽăšăŹăăă§ăăăžăă čżäżĄăăĺăŤăăăŁăšăŤăăˇă§ăłăăčŞăżăă ăăă ç§ăŻăăăăăŞăĺ¤ăăŽăă¨ăćąăăŚăăăă¨ăçĽăŁăŚăăžăăăăăăăăŻĺăĺéĄăä˝ĺşŚăä˝ĺşŚă誏ćăăăăŽăéżăăĺŻä¸ăŽćšćłă§ăă
RFCăŽćąşĺŽăŻĺ ŹăŤçĽăăăŚăăč°čŤăŤĺşăĽăăŚăŽăżčĄăăă¨ăă§ăăă¨ăăĺ ŹĺźăŽčŚĺăăăăă¨ćăăžăăďź
ăăăŻăéĺ ŹĺźăŤăć°ăăčŤççć šć ăŞăăăŤăźăŤă¨ăăŚçĽăăăŚăăžăă
ăăăăŠăăŤć稿ăăă°ăăăăăăăžăăăă誰ăăhttps://github.com/rust-lang/rust/issues/56256ăčŚăŚăżăžăăăďź
ăďź56256ăŤé˘éŁăăimpl<T> From<Box<T>> for Pin<Box<T>>
ĺŽĺŽĺăăăŚăăOPăŤč¨čźăăăŚăăŞăăăä¸ĺşŚăăăŻćéťçăŤĺŽĺŽă¨ăŞăăžăPin
ăžăăă čŞćă§ăŻăŞăăĺŽĺŽĺăŽăăăŤć¤č¨ăăĺż
čŚăăăäťăŽçšć§ăŽĺŽčŁ
ăŻăăăžăăďź ďźăăăĽăĄăłăăăšăăŁăłăăă¨ăäťăŽăăšăŚăŽăăăĽăĄăłăăŻăăŠăăăăăăă¤ăłăżăźăŽĺŽčŁ
ăĺ§äťťăăăŽăŻç°ĄĺăŞăăă§ăďźă
äťćĽălibsăăźă ă§ăăŽĺéĄăŤă¤ăăŚčŠąăăžăăă č°čŤăŽćĺžăŽć°éąéăŻăçšăŤUnpin
ĺ˝ĺăŤé˘ăăŚăćĺăŤĺăçľăăšăăă¨ăăžă ăăă¤ăăăăă¨ă示ăăžăăă
ăăăăŁăŚăçžćçšă§ăŻăăăĺŽĺŽăăăăă¨ăŻăăžăăďźFCPăŤăăăăăăďźă
誰ăăăăŽăšăŹăăă§ă˘ă¤ăă˘ăéăăŚăĺ˝ĺçśćłăćšĺăăăăăŽçŹçŤăăććĄăćşĺăăăă¨ăă§ăăă°ĺš¸ăă§ăă
@ăă ăłăăŁ
誰ăăăăŽăšăŹăăă§ă˘ă¤ăă˘ăéăăŚăĺ˝ĺçśćłăćšĺăăăăăŽçŹçŤăăććĄăćşĺăăăă¨ăă§ăăă°ĺš¸ăă§ăă
ăăăŻălibsăăźă ăçžĺ¨ăŽAPIăăăŽăžăžĺŽĺŽăăăăă¨ăćăžăŞăăă¨ăćĺłăăžăăďź ĺäşşçăŤăŻăçžĺ¨ĺŽčŁ ăăăŚăăĺĺăŽăťăăăăăĺŞăăĺĺăćăă¤ăăäşşăŻăăŞăă¨ćăăžăăăăŽăăăăăŽăăăŞććĄăăăăă¨ăŻă§ăăžăăăăăăăăŽAPIăĺŽĺŽăăăă¨ăé常ăŤć°ăŤăăŚăăžăăăăăăŁăŚălibsăăźă ăŽčŞ°ăă弽ăăŞĺĺăćăŁăŚăăĺ ´ĺăŻăďźshipitďź
ăăăăăŽĺĺă¨ä¸çˇăŤăăăăă¤ăŻăˇă§ăăăă @ anpăŻDePin
ććĄăăžăăăăăăŻă Unpin
ăăăłă§ăŻăŞăăă¨ăăćĺłăĺăé¤ăăăżă¤ăăŤă¤ăăŚčŠąăăŚăăăă¨ă埡調ăăŚăăăăăĺŽéăŤăŻăăŞăć°ăŤĺ
ĽăŁăŚăăžăăăăăŻde- Pin
'dăŤăŞăăžăă
@KimundiăăŞăăžăăŻlibsăăźă ăŽčŞ°ăăăć示çăŞăfcpăŽć¸ĺżľăăçťé˛ăăŚăăăăFCPăă
@rfcbotăŻUnpinăŽĺ˝ĺăŤé˘ăă
FCPăĺ
Ľĺăăă¨ăăăăĺŽéăŤćŠč˝ăăăăŠăăăŻăăăăžăăăă Unpin
ăăŹă¤ăăŽĺĺäťăăŤćŁĺźăŞăăăăăłă°ăŽć¸ĺżľă罎ăăăă¨ćăăžăă Unpin
çšć§ăŻăAPIăŤă¨ăŁăŚé常ăŤéčŚă§ăăăăăŤčŚăăăăăăŤăăŹăăŁăăďźä¸č¨ă§čŞŹćďźăŻăăăăčŞăăăłăŤăšăăłăĺźă辡ăăăžăă
ăăăăăŞĺĺăŤă¤ăăŚăăăăăŽăłăĄăłăăăăăžăăăăćŽĺżľăŞăăç§ăŻăžă ăăăťăŠč弎ăăŚăăžăăă ç§ăŽăăć°ăŤĺ
ĽăăăŻăžă MoveFromPin
ăžăăŻRelocate
ăŽçˇăŤć˛żăŁăŚăăžăďźç§ăŽçĽăŻăăăŤé常ăŤĺ¤ăăŽăłăĄăłăăăăăăăăăŹăăĽăźăăćšćłăăăăăžăăďźă
ĺäşşçăŤăŻă Pin
čŞä˝ăŽĺĺă¨ă Unpin
çšć§ăĺŽčŁ
ăăŚăăŞăZSTăŽPinned
ăŽĺĺăŻĺéĄăăăžăăă
Unpin
ăŽĺĺăââăăă§ăŽĺ¤§ăăŞčŤçšă§ăăă¨ăă@alexcrichtonăŤĺŽĺ
¨ăŤĺćăăžăă ććĄăăăćŠč˝čŞä˝ăŤă¤ăăŚç§ăčŚăéăăćčĄçăŞć¸ĺżľăŻăŞăă¨ćăăžăďźăă ăăăłăĄăłăăŻăăăăăăăŽă§ăä˝ăăčŚéăăŚăăĺŻč˝ć§ăăăăžăďźă
Pinned
ăĺŤăăăŽăŻĺŽéăŤăŻĺşĺŽăăăŚăăŞăăăă Pinned
ăŻZSTăŽĺĽĺŚăŞĺĺă ă¨ćăăžăă Unpin
ăŻăŞăă ăă§ăă PhantomPinned
ďźďź55992ă§ĺĺăĺ¤ć´ăăăăăďźăŤăŻăZSTă_ćŹĺ˝ăŤ_ç´Unpin
ĺ ´ĺă Pin
ĺç
§ăăă¨ăăĺăĺéĄăăăăžăă
ăžăăăăŽćŠč˝ăŽĺžŽĺŚăăčăăă¨ăăăăĽăĄăłăăŤăŻăăăŤä˝ćĽăĺż čŚă ă¨ćăăžăăăăăăŻăăăăăăăăŤăźă¨ăăŚăŤăŚăłăăăăžăăă
ăžăă @ Kimundi ălibsăăźă ăăăă解湺ăăăăăŤăăĺ°ăćéăä¸ăăŚăăăăă¨ăĺŹăăćăăžăă ä¸ĺż čŚăŞăă¤ăŻăˇă§ăăăŽăăăŤčŚăăăăăăăžăăăăç§ďźăăăŚäťăŽäşşăăăă§ăďźăŻăăăŽćŠč˝ăŽćăăăăăćšĺăăăă¨ăé常ăŤéčŚă ă¨ćăăžă:)
@jonhooăŤĺćăăŚă Pinned
ăžă ĺĽĺŚăŤćăăŚăăă PhantomPinned
ăŻăă䝼ä¸čŻăăŻăăăžăăďźăăĄăłăă ăŽćšćłă§ăăăăłçăăăăŚăăžăăďźă Unpin
ăŤéŠăăĺĺăčŚă¤ăăŁăĺ ´ĺă Pinned
ăŻĺ˝çśNot{NewNameForUnpin}
ăŤĺĺăĺ¤ć´ăăăăŽăŤĺ˝šçŤă¤ă¨ćăăžăă
ç§ăŻćŹĺ˝ăŤç§ăăĄăč°čŤäťťćăŽăăĺ¤ăăŽćéă貝ăăĺż
čŚăŻăŞăă¨ćăăžăPhantomPinned
ăăŽăżă¤ăăŻăťă¨ăăŠă¨ăłăăŚăźăśăźăŤčĄ¨ç¤şăăăăă¨ăŻăăăžăă- ă PhantomNotUnpin
/ PhantomNotDePin
/ PhantomNotMoveFromPin
/ăŞăŠăŻăăăăĺ¤ăăĺ°ăŞăăä¸čŹçăŤăăăăAPIăăă§ăŤĺĺăŤĺżŤéŠăŞăŚăźăśăźăŤĺ¤ăăĺ°ăŞăăćç˝ăŤăăăăăăă¨ăŻăăăžăăAPIă使ç¨ăăŚă PhantomPinned
ćŁĺ˝ăŞä˝żç¨ćłăčăĺşăăžăăă
ç°ĄĺăŞă˘ă¤ăă˘ďźăăŹă¤ăMove
ă¨ZST Anchor
ă
Pin
ăŤĺşĺˇăăAnchor
ăĺŤăžăăŚăăŞăéăăăăšăŚăŽăżă¤ăăŻMove
Pin
ă§ăă
Anchor: !Move
ç´ćçăŤćĺłăăŞăćšćłă弽ăă§ăă
çšăŤPhantomPinned
ăŤćéă貝ăăăă¨ăććĄăăŚăăăăă§ăŻăăăžăăăă Unpin
çé¸ăăăăŽăŻăăšăŚćŠč˝ăăĺŻč˝ć§ăăăăăăăŞăźăăłăă¤ăłăăçśćăăăŽăŻç°Ąĺă§ăŻăŞăă¨ćăăžăă PhantomPinned
ăŤă¤ăăŚăĺć§ă§ăă
Move
ăŤă¤ăăŚčŞŹćăăăŞăăăăä¸éŠĺăŞăŽăăä˝ĺşŚă誏ćăăžăăă ăăšăŚăŽăżă¤ăăŻăĺşĺŽăăăăžă§ç§ťĺĺŻč˝ă§ăă ĺć§ăŤă Anchor
ăŻäťĽĺăŤććĄăăăŚăăžăăă Unpin
ing / Move
ingăăăŞăăă˘ăŚăăăăăăŤä˝żç¨ăăăŚăăăă¨ăŻĺĺăăăŻăžăŁăăćăăă§ăŻăăăžăăă
@stjepang !Unpin
ăă¨ăĺŽéăŤç§ťĺă匨ăăŞăăăă Move
ăŻăă°ăăĺăŤç ´ćŁăăăă¨ćăăžăă ăżă¤ăăä¸ăŤăăĺ ´ĺăŽăżă§ăPin
ăă¨ăăă§ăŻăăăžăăUnpin
ăăŞăăŻăăă秝ĺăăŞăăĺĽç´çžŠĺăč˛ ăŁăăăăŚăăăă¨ăăă
ĺ ăŽăłăĄăłăă§@withoutboatsăŻč¨ăŁăďź
Pin
ăŠăăăźăŻăĺç §ăăăĄă˘ăŞăćĺŽăŽä˝ç˝ŽăŤăĺşĺŽăăăăăăŤăă¤ăłăżăĺ¤ć´ăăžă
ĺ¤ăăĺşĺŽăăăăŚăăŞăăăăĺăUnpin
ĺŽčŁ
ăăăŽăŻĺĽĺŚă ă¨ćăăžă-ăĄă˘ăŞăŻĺşĺŽăăăŚăăžăă ăă ăăăĺŽĺ
¨ăŤç§ťĺă§ăăăĺ¤ăŤă¤ăăŚčŠąăăă¨ăŻçăŤăăŞăŁăŚăăžăă Unpin
ĺĺăMoveSafe
ăŠăăŞăăžăăďź
UnwindSafe
çšć§ăčăăŚăżăžăăăă ăăăŻĺăŞăăăăłăăăăźăŤăźçšć§ă§ăăăĺŽĺ
¨ăŤĺŽčŁ
ă§ăăžăă !UnwindSafe
ĺ¤ăcatch_unwind
ĺ˘çăčśăăăăăŤăăă¨ďź AssertUnwindSafe
ďźăä¸ĺ¤ćĄäťśăçĄĺšăŤăăăă¨ă§ĺ¤ăăĺŁăăăă¨ăŤăŞăăžăă
ĺć§ăŤă !Unpin
/ !MoveSafe
ĺ¤ăăăĺ ´ĺă§ăăďźăăĄăăďźç§ťĺă§ăăžăăăčŞĺˇąĺç
§ăçĄĺšăŤăăăă¨ă§ăĺŁăăăă¨ăă§ăăžăă ăłăłăťăăăŻäźźăŚăăăăă§ăă
çšć§Unpin
ĺŽéăŤăŻMoveSafe
ćĺłăăžăă Pin
ĺžăăŽăĄă˘ăŞăă秝ĺă§ăăĺ¤ăŤă¤ăăŚă§ăŻăŞăăăăŤç§ăŤăŻćăăžăă ăăăăăăăŻăăŞăăăăăăĺăăăă¨ăăŤăĺŁăăŞăăĺ¤ăŤă¤ăăŚă§ăă
MoveSafe
ăŻă Move
ă¨ĺăĺéĄăăăăžăăăăšăŚăŽĺ¤ăŻăăŠăŽăżă¤ăă§ăĺŽĺ
¨ăŤç§ťĺă§ăăžăă ĺ¤ăĺşĺŽăăăĺžă§ăŽăżăĺ¤ă秝ĺă§ăăŞăăŞăăžăă
MoveSafe
ăŻăMove
ă¨ĺăĺéĄăăăăžăăăăšăŚăŽĺ¤ăŻăăŠăŽăżă¤ăă§ăĺŽĺ ¨ăŤç§ťĺă§ăăžăă
ăăă§ăăă UnwindSafe
ăăăŤăăĺŽĺ
¨ăăŽćĺłăŻç°ăŞăăžăă ă¨ăŤăăăç§ăŻRelocate
ăžăăŻăăŽăăăŞăăŽă§ĺ¤§ä¸ĺ¤Ťă§ăăăă
čŚç´ăăă¨ăăăŹă¤ăĺăŻDePin
ă Unpin
ăăžăăŻĺĺăŤăăăłăăĺŤăžăăăăŽă§ăăŁăŚăŻăŞăăŞăă¨ćăăžăă ç§ăŤă¨ăŁăŚăăăă桡䚹ăŽä¸ťăŞĺĺ ă§ăă ăăŹă¤ăăŻăĺŽéăŤăŻPin
ăŽćç¸ăăăŽăă¨ăšăąăźăăăăăă§ăŻăăăžăăăăăŹă¤ăăŻă秝ĺăăŚăĺ¤ăçĄĺšăŤăŞăăŞăăă¨ă示ăăŚăăžăă
Pin
ă¨Unpin
ăŻĺŽĺ
¨ăŤĺĽăŽăăŽă ă¨ćăăžăă :)
ç§ăŻćŁĺ寞ăćăăžă;ďźă çšć§ăŻăPinăŤé˘ăăŚăŽăżćĺłăăăăžăăăăăŻăĺşăŤăŞăĺ¤ăŽç§ťĺĺŻč˝ć§ăŤĺŻžăăĺśç´ăćĺłăŽăă形ă§čĄ¨çžăăĺŻä¸ăŽăżă¤ăă§ăă ăăłăăŞăă¨ăăăłăĺ¤ăăŚăăžăŁăăćĺłăăăăžăăă
ăăłăăźăăŤä˝ăă罎ăăă¨ă¨čăăăŽă弽ăă§ăă ăăźăăŤĺşĺŽăăăŚăăăŞăă¸ă§ăŻăăŽăăłăĺ¤ăă¨ăăŞăă¸ă§ăŻăă秝ĺă§ăăžăă ăăłăĺ¤ăă¨ăăłăĺ¤ăăžăă
ç§ăŻUnpin
ă¨ăăĺĺă弽ăă§ăă
ăžăăďźUnpinăäşéĺŚĺŽă§ăăă桡䚹ăĺźă辡ăăĺŻč˝ć§ăăăăă¨ăăăăăžăă ăăăăăŠăăăăăŽé ťĺşŚă§!Unpin
ăć¸ăĺż
čŚăăăăŽă ăăăă
UnpinăŽăă1ă¤ăŽĺĺăŻă Detach
ă§ăă ăăłăăźăăŽăĄăżăăĄăźăŤćťăă¨ăăăłă_ă˘ăłăăł_ăăăŽă§ăŻăŞăăăŞăă¸ă§ăŻăăăăăłă_ăăżăă_ăăžăă
ç§ăŻDePin
ćŹĺ˝ăŤĺĽ˝ăă ă¨ćăăžăďź ăăăžă§ăŽă¨ăăăăăăŻç§ăŽăć°ăŤĺ
Ľăă§ăăç°Ąć˝ă§ăćăăăŤĺčŠă§ăăă形厚čŠă§ăŻăăăžăăăăžăă !DePin
ăăăŞăć確ăŤčŚăăžăďźăăăłăĺ¤ăăă¨ăŻă§ăăžăăăďźă
ĺ¤ăăĺşĺŽăăăăŚăăŞăăăăĺăUnpinăĺŽčŁ ăăăŽăŻĺĽĺŚă ă¨ćăăžăăă¤ăžăăăĄă˘ăŞăŻĺşĺŽăăăŚăăžăă
ĺ¤ăŻăĄă˘ăŞăŤĺşĺŽăăăžăă ăăăăăăă§ă䞥ĺ¤ăŻé常ăŤéčŚă§ăă ç§ăŤă¨ăŁăŚăăĄă˘ăŞăŽĺşĺŽă¨ăŻăĺç
§ă§ăăŞăçść
ăçśćăăăă¨ă§ăăă mem::swap
éĺăăăă¨ăŻăăăžăăă ĺ¤ăăĄă˘ăŞăŤĺşĺŽăăăă¨ăŻăăăŽĺşĺŽăăăĺ¤ăäťăŽĺ ´ćăŤç§ťĺăăŞăăă¨ă§ăăăăăŻăžăăŤPin
ăă¨ă§ăă
ăžăăďźUnpinăäşéĺŚĺŽă§ăăă桡䚹ăĺźă辡ăăĺŻč˝ć§ăăăăă¨ăăăăăžăă ăăăăăŠăăăăăŽé ťĺşŚă§ďźUnpinăć¸ăĺż čŚăăăăŽă ăăăă
ăăŞăăĺĺă桡䚹ăăăŞăă¨č¨ăă¨ăăç§ăŻăăŞăăčăăžăă ç§ă¨ăăŽăšăŹăăăŽäťăŽĺ¤ăăŽäşşăŻăĺĺăŤćˇˇäšąăăŚăăăă¨ăŤć°ăĽăăžăăă
ćĺ
ăŤăłăźăăăăăžăăăăĺ
çŠăĺăăŚä˝żç¨ăăăă¨ăăimpl Future<Output=T>
ăčżăé˘ć°ăĺż
čŚ
ăăăăăăăăăłăŽćĺłăŞăăăă ăă ăăă˘ăłăăłăŻ..ăăăŻăšăćĺłăăăŽăďźăŞăăăăçšĺž´ăŞăŽăďźă
ăĺž
ăŁăŚă impl !Unpin
ďźăŞăăăăimpl Pin
ăŞăăŽă§ăăďźă
ăăăă§ăăăăłçăă¨ăăłçă解é¤...ăŻćŁĺ寞ă§ăŻăăăžăăăăžăŁăăç°ăŞăăăŽă§ăăăăă§ăŻăăăłçă解é¤ăŻăŠăăăćĺłă§ăăďźăŞăăăă¨ĺźă°ăăăŽă§ăăďźă
ăăăŁăă!Unpin
ăŠăăăćĺłă§ăăďźăăă§ăŻăăăžăă...äťăŽăăăłă§ăŻăăăžăăăďźHrrrghă
ăăă§ăăăăăç§ăŽé ăŽä¸ă§çăŤăăŞăŁăŚăăĺŻä¸ăŽćšćłăŻăăunpinăăărelocatableăăŤç˝Žăćăăăă¨ă§ăă ăăżă¤ăăŻăĄă˘ăŞĺ ă§ĺé 罎ă§ăăžăăăăŻĺŽĺ ¨ăŤçăŤăăŞăŁăŚăăžăă ăăă§ăăăăłăä˝ăăăăŽăăçĽăŁăŚăăŚăăăăżă¤ăăŻ
Unpin
ĺĺăRelocatable
ďźăžăăŻRelocate
ďźăŤĺ¤ć´ăăă¨ăç§ăŽć缨ăĺžăăăžăđłă ăăăăç§ăŻUnpinăăăäťăŽććĄăŽăťă¨ăăŠăčŚă¤ăăă§ăăăă
çšć§ăŻăPinăŤé˘ăăŚăŽăżćĺłăăăăžăăăăăŻăĺşăŤăŞăĺ¤ăŽç§ťĺĺŻč˝ć§ăŤĺŻžăăĺśç´ăćĺłăŽăă形ă§čĄ¨çžăăĺŻä¸ăŽăżă¤ăă§ăă ăăłăăŞăă¨ăăăłăĺ¤ăăŚăăžăŁăăćĺłăăăăžăăă
ăăăŤăă¤ăłăă罎ăăăăŤ-ăăłăŽĺ¨ăăŽäżč¨źăŻĺŽĺ
¨ăŤçšĺŽăŽĺä˝ăŽĺ¨ăă§ăăăăżă¤ăă§ăŻăăăžăăă ăă¨ăă°ă ()
ăçćăăă¸ă§ăăŹăźăżăźé˘ć°ăŻăçš°ăčżăĺéăăăă¨ă§FnOnce
ç°ĄĺăŤĺŽčŁ
ă§ăăžăă ăăŽăżă¤ăăŻUnpin
ĺŽčŁ
ăăŞăĺŻč˝ć§ăăăăžăăăăăŽyieldçść
ăŻčŞĺˇąĺç
§ă§ăăĺŻč˝ć§ăăăăăă FnOnce
ă¤ăłăżăźăă§ă¤ăšďźăăčŞä˝ă秝ĺăăďźăŻă FnOnce
ă¨ăăŤăžă ĺşĺŽăăăŚăăŞăăăăĺŽĺ
¨ăŤĺŽĺ
¨ă§ăUnpin
ăŻăăżă¤ăăŽĺşćăŽăăăăăŁă§ăŻăŞăăăżă¤ăăĺşĺŽăăăĺžďźă¤ăžăăăżă¤ăă秝ĺăăĺžďźăŤĺŽĺ
¨ă§ăăă¨ä¸ťĺźľăăăĺä˝ăŽç¨ŽéĄăŤé˘ăăăăŽă§ăă
çŽčăŞăă¨ăŤă Unpin
ĺ˝ĺăŻéĺťăŤééăăŞăč°čŤăăăŚăăžăăăăăăăŤă¤ăăŚăŽč°čŤăŻă Move
ăUnpin
ăŤç˝Žăćăăăă¨ăé¸ćăăă¨ăăŤçŽćăăăă¨ăčŚăăŚăăžăă ćç˝ăŞćšĺă§ăă ăăăŚăĺ¤ăăŽĺ ´ĺăĺžă§ć°äťăă ăă§ăăçžĺ¨ăŽč¨č¨ăŻäťĽĺăŽăăŽăăăć確ăŤćšĺăăăŚăăžăăăăăăŤćšĺăăä˝ĺ°ăăăžăă ăăăç§ăăăăŤĺăăŁăŚăăćšĺă§ăă
ĺşĺŽč§Łé¤ăŻăĺ ˇä˝çăŤăŻăĺăĺşĺŽăăăĺžďźă¤ăžăă秝ĺďźăŤĺŽĺ ¨ă§ăăă¨ä¸ťĺźľăăăĺä˝ăŽç¨ŽéĄăŤé˘ăăăăŽă§ăăăĺăŽĺşćăŽăăăăăŁăŤé˘ăăăăŽă§ăŻăăăžăăă
ĺşĺŽăăăă¨ăăŽĺä˝ăŻăĺ ąćăăăă¨ăăŽĺä˝/ä¸ĺ¤ćĄäťśă¨ĺć§ăŤăăżă¤ăăŽĺşćăŽăăăăăŁă§ăă ăăăŤă¤ăăŚăŻăăăŽăăă°ć稿ă§čŠłăă誏ćăăžăăă
@RalfJungç§ăăĄăŻčś
ăăŚčŠąăăŚăăă čŞĺˇąĺç
§ĺăŻă秝ĺă§ăăŞăăă¨ăă桡䚹ăăăăăăăăžăăăăăŻćŁç˘şă§ăŻăŞăă秝ĺă§ăăŞăçšĺŽăŽçść
ăŤĺ
Ľăăă¨ăă§ăăžăăăäťăŽçść
ăŤăăéăŻĺŽĺ
¨ăŤĺŽĺ
¨ă§ăăăăăă秝ĺăăăăăŤďźăăăŚç§ăăĄăŽAPIăŻăăăăă秝ĺăăćŠč˝ăŤäžĺăăŚăăžăăăă¨ăă°ăăăăăŤăłăłăăăźăżăéŠç¨ăăăă Pin<Box<>>
ăŤç§ťĺăăăăăžăďźă ăăăăŽăżă¤ăăă秝ĺă§ăăŞăăă¨ăăăăă§ăŻăŞăăă¨ăć確ăŤăăăă¨ăăŚăăžăă
ăăăăŻăăăăăŞăç§ăŻĺćăăžăă !DePin
ăżă¤ăăŻĺ¸¸ăŤĺşĺŽăăăŚăăăăă§ăŻăŞăă
@cramertj @withoutboatsç§ăăžă ĺĺăŤć¨ć¸Źă§ăăŚăăŞăăă¨ăŽ1ă¤ăŻă Unpin
ĺĺăĺ¤ć´ăăăă¨ăŤĺ寞ă§ăăďź ĺĺăĺ¤ć´ăăĺż
čŚăăăăă¨ăŤĺćăăŚăăă¨ăŻćăăžăăăăĺ寞ăăŠăăăŻăăăăžăăă
ĺäşşçăŤăŻăăăă§ăŽä¸ťăŞĺéĄăŻUnpin
ă¨ăăĺĺăŤăăă¨ăŻćăăžăăăăĺĺăĺ¤ć´ă§ăăă°ăăăšăŚăç´ćçăŤăŞăăžăăă ĺĺăŽĺ¤ć´ăŻĺ°ă彚çŤă¤ăăăăăžăăăďźăăăŚRelocate / DePinăŻăăă§ăŻăăăăă§ă...ďźă丝ăŞč¤éăăŻăăčŞä˝ăĺşĺŽăăă¨ăăćŚĺżľăăćĽăŚăăă¨ćăăžăă ăăăŻç˘şăăŤç解ăžăăŻčŞŹćăăăŽăćăç°ĄĺăŞćŚĺżľăŽ1ă¤ă§ăŻăăăžăăă ăťă¨ăăŠăăăžăăă
ăăăăŁăŚă core::pin
ă˘ă¸ăĽăźăŤăŽăăăĽăĄăłăă_大ĺš
ăŤ_埡ĺăăĺż
čŚăăăăăăăŤĺ¤ăăŽäžăĺŤăăĺż
čŚăăăă¨
@alexcrichtonç§ăŻĺĺăŽĺ¤ć´ăŤĺ寞ăăŚăăžăăă Unpin
ăŻăă大ä¸ĺ¤Ťă ă¨ćăăžăăă DePin
ă§ĺ¤§ä¸ĺ¤Ťă ă¨ćăăžăăŽă§ăććĄăăžăăă RemoveFromPin
ăŻćăćăăăŤăćŁăăăă§ăăăć§ćä¸ăŽĺĄŠăŽçšă§ĺéˇăŞăŽă§ăç§ăŻăăŽĺĺăŤçšăŤĺ寞ăăă¨ćăăžăă ăă ăă誰ăăĺćăăĺĺăćéŠă§ăăăă¨ăăăăăžă§ăĺŽĺŽĺăçĄćéăŤĺťśćăăăă¨ăŤĺ寞ăăŚăăžăăAPIăŤăŻă Unpin
ĺĺăŽăăăŤĺçăŤčŻăăćŞăăăŞăăŞăăĺşćăŽč¤éăăăăă¤ăăăă¨ćăăžăă futures_api
ĺ¨ăăŽăłăźăăăăăĽăĄăłăăăăăłăăŁăšăŤăăˇă§ăłă¸ăŽăăŁăźăłăĺ˘ăăăŽăé˛ăăăăŤăăăăŤĺŽĺŽĺăŤĺăăŚăăăˇăĽăăăă¨ćăăžăďźăăăăŁăŚă futures_api
ăĺŽĺŽăăăăăăŽăăźăšăŽćşĺăéĺ§ă§ăăžăčŞä˝ďźă ăăăăăćčŚăćăŁăŚăăăăšăŚăŽäşşă解湺çăććĄăăăăă解湺ăăăăăŽăăéŤă帯ĺĺš
ăŽćŠäźăĺžăăă¨ăă§ăăăăăŤăĺ°ç¨ăŽĺĺ解湺VCäźč°ăăšăąă¸ăĽăźăŤăăĺż
čŚăăăăžăăďź
ç§ăŽć缨ăŻstd::pin::Reloc
ďźç§ťčť˘ďźă§ă
ç§ăŤăŻ2ă¤ăŽé常ăŤćśçŠşăŽçśćłăăăăžăďźĺŽéăŤăŻ1ă¤ă ăă§ăăă2ă¤ăŽç°ăŞăĺŽčĄďźă訹ĺŻăăăŚăăăăŠăăăć示çăŤčż°ăšăŚăăăžăăžăăă
Unpin
ăŻăĺşĺŽăăăĺçść
ďźç§ăŻăăŽç¨čŞăćŁăăčŚăăŚăăăă¨ăéĄăŁăŚăăžăďźăŽéăŤăăšăŚăŽT
ďź T: Unpin
ďźçść
ăă秝čĄăăăŽăŻç°Ąĺă§ăăăă¨ă示ăăžă@RalfJungăŽăăă°ć稿ăŽ1ă¤ăăďźăăłçăăăăŚăăŞătype-stateă¸ă ăăăă Pin
ă&mut T
Pin
ăă¨ăă§ăăççąă§ăă
ăăă§ăăăłçăăăăăżă¤ăçść
ăăăăłçăăăăŚăăŞăăżă¤ăăŤăăéăăăšăŚăŽWoof
ăŽçść
ăă常ăŤéˇç§ťăăăă¨ăĺŻč˝ăŞăżă¤ăWoof
ăä˝ćăăăă¨ăăžă-çść
ă§ăăăăăăăăă¨ăŻç°Ąĺă§ăŻăŞăăăăăăŁăŚUnpin
ĺŽčŁ
ă§ăăžăăă Woof
ăfn unpin(self: Pin<Box<Woof>>) -> Box<Woof>
ăăăŞé˘ć°ăćă¤ăă¨ăŻč¨ąĺŻăăăžăăďź
ăăłçăăăăăăŽăăăăłçăăăăŚăăŞăăăŽă¸ăŽç§ťčĄăăăžăŤăăă§ăăŞăăżă¤ăMeow
ă¨ă fn unpin(self: Pin<Box<Meow>>) -> Result<Box<Meow>, Pin<Box<Meow>>>
ăăăŞé˘ć°ăŤă¤ăăŚăĺăă§ăă
ăă¤ăŻăˇă§ăăŁăłă°ăŽăăăŽç§ăŽ2ăŤăŠăăďź
ç§ăćŁăăç解ăăŚăăă°ă Unpin
ĺŽéăŤćĺłăăăŽăŻăă Pin
ăŻç§ăŤĺ˝ąéżăä¸ăăŞăăă¨ăăăă¨ă§ăă
BypassPin
ăIgnorePin
ăăăŞăăŽăŻăŠăă§ăăďź
ăăăăŁăŚăăăłçăăăăăżă¤ăçść ăăăăłçăăăăŚăăŞăăżă¤ăçść ăŤăăéăWoofăŽăăšăŚăŽçść ăă常ăŤéˇç§ťăăăă¨ăĺŻč˝ăŞăżă¤ăWoofăä˝ćăăăă¨ăăžăăăăăăăăă¨ăŻç°Ąĺă§ăŻăăăžăăăăăăăŁăŚăUnpinăĺŽčŁ ă§ăăŞăĺ ´ĺăWoofăfn unpinďźselfďźPinďźPinďźăŽăăăŞé˘ć°ăćă¤ăă¨ăŻč¨ąĺŻăăăžăăďź
>ďź->ăăăŻăš ďź
ăŻăăăăăŻĺŻč˝ă§ăăăŻăă§ăă ăă¨ăă°ă Woof
ăäžľĺ
ĽĺăŞăłăŻăŞăšăăŽčŚç´ ă§ăăĺ ´ĺăăŞăšăăăčŚç´ ăĺé¤ăăĺćăŤPin
ăĺé¤ăăé˘ć°ăćäžă§ăăžăďź -ă¨ăłăăĽăźăăăWoof
să2ă¤ăŽăżă¤ăăšăăźăăŻĺçă§ăăăăăăăłă解é¤ă§ăăžăďźă
Relocate
ăŻăç§ăŤă¨ăŁăŚRePin
ă¨ĺăĺéĄăăăăžăăăăăŻăĺ¤ăĺŽĺ
¨ăŤĺşĺŽč§Łé¤ăăăŽă§ăŻăŞăăĺşĺŽăăăĺ ´ćăăĺĽăŽĺ ´ćăŤĺ¤ă秝ĺă§ăăćä˝ăćĺłăăĺŻč˝ć§ăăăăžăă ăăăŻRePin
ăťăŠĺźˇăăŻăăăžăăăăăăă§ăĺ°ă桡䚹ăăŚăăăăă§ăă
ĺ¤ăĺŽĺ ¨ăŤĺşĺŽč§Łé¤ăăăŽă§ăŻăŞăăĺşĺŽăăăĺ ´ćăăĺĽăŽĺ ´ćăŤĺ¤ă秝ĺă§ăăćä˝ăćĺłăăĺ ´ĺăăăăžăă
ăăăŻćŁç˘şăŤăŻăăŽçšć§ăŽçŽçă§ăŻăăăžăăăăĺŽĺ
¨ăŤééăŁăŚăăăăă§ăăăăžăăăăťă¨ăăŠăŽăŚăźăšăąăźăšă§ăŻăĺşĺŽăăăĺ ´ćăăĺĽăŽĺ ´ćăŤĺ¤ă秝ĺăăăă¨ăŻăčŞçąăŤä˝żç¨ăăăŽă¨ĺăăăăĺŁćť
çă§ăă ĺŽéă誰ă§ăPin<Box<T>>
ăä˝ćă§ăăăă¨ăčăăă¨ăăŞăăăă§ć šćŹçăŞĺşĺĽăăăŚăăăŽăăăăăăăžăăă
ăťă¨ăăŠăŽăŚăźăšăąăźăšă§ăŻăĺşĺŽăăăĺ ´ćăăĺĽăŽĺ ´ćăŤĺ¤ă秝ĺăăăă¨ăŻăčŞçąăŤä˝żç¨ăăăŽă¨ĺăăăăĺŁćť çă§ăă
ăŻăăăăŽăăăăăŽćä˝ăĺăŤčż˝ĺ ăăăăŹă¤ăăăăă¨äžżĺŠă§ăďźĺ
é¨ĺç
§ăŽć´ć°ăŞăŠăčĄăĺż
čŚăăăĺ ´ĺăăăăăăăăăŻUnpin
ăăăŞăăźăŤăźăăŹă¤ăă§ăŻăăăžăăďźă ç§ăŻäťăăŽăăăŞăăŽăčż˝ĺ ăăăă¨ăććĄăăŚăăžăăăăă ăăăĺ°ćĽďź std
ăžăăŻăľăźăăăźăăŁăŽăăăăă§ďźćäžăăăăŽăčŚăăă¨ăă§ăăĺĺăŽç´ăăăăéč¤ăŤçľăăĺŻč˝ć§ăăăăăŽă§ăă
äťăŽă¨ăăăăăŽĺźˇĺăŞăŚăźăšăąăźăšăŻăăăăžăăăăăăłçăăăăăłăŹăŻăˇă§ăłă§ăăŽăăăŞăăŽă使ç¨ăăăă¨ăčăăžăăă
ăăŚăăăăŤăăă¤ăăŽčăăăăăžăă ćĺăŻă PinInert
ăPinNoGuarantees
ăăăŞĺĺăäťăăăă¨ăă§ăăăăŠăăçĺăŤćăŁăŚăăžăăăăăăăŻčŞŹćă§ăăăăžăăăç§ăćŹĺ˝ăŤĺż
čŚă¨ăăŚăăăŽăŻăă˘ăŻăˇă§ăłă§ăŻăŞă
Unpin
ĺéĄăŽ1ă¤ďźççąăŻăăăăžăăďźăŻăćĺłăăćĺłăăăăłăăĺ¤ăăăăłăĺ¤ăăĺŽĺ
¨ăŤĺŽčĄă§ăăăă¨ăăăă¨ăé ăăç解ă§ăăŞăăă¨ă§ăă "ă ăăŽăžăžăŽçšć§ăŻăăăłăĺ¤ăčĄçşăă¨ăăčĄĺăäźăăžăăăčŞăă§ăżăă¨ăăăăăăŞăăăă§ăă Pin<T: Unpin>
ăăăăŽăŻĺĽĺŚăŤćăăžăăăŞăăŞăăăăăăăăłçă解é¤ăăŽĺ ´ĺăăŞăăăłăŤăŞăŁăŚăăăŽă§ăăăăă
CanUnpin
ăăăŞĺĺă§ăăžăăăăŽă ăăăďź ăăăŽĺ¤ăăŻăä˝ăăăŽćšćłă§ăăźăäżč¨źăŤé˘ăăăăŽă§ăŻăăăžăăďź Unpin
ĺŽčŁ
ăăăă¨ăŻăăăłăăĺé¤ăăăă¨ăćĺłăăăŽă§ăŻăŞăăăăłăăĺé¤ă§ăăăă¨ăćĺłăăžăďźă ăăăŻăŠăŽăăăŤčăăăžăăďź CanUnpin
ăŻäťăŽäşşăŤăĺĺăŤčŞăăžăăďź ĺĺăŤçăă§ăăďź
ďźćĽé čžCan
äťăăă¨ăĺčŠăăŻăăăŤç°ĄĺăŤäźăăăžăăăăłăăĺé¤ă§ăăă¨čĄ¨ç¤şăăăžăăăĺż
ăăăăăăŞăă¨ăŻéăăžăăďźă
ĺĽăŽçĄé˘äżăŞćĽçˇă¨ăăŚăç§ă䝼ĺăŤć辡ăăăŽăĺżăă1ă¤ăŽăă¨ďźăăăŤă¤ăăŚăŻçłă訳ăăăžăăďźďźăŻăä¸č¨ăŽăăšăŚăŽćšćłăĺż
ăăăĺşćăŽćšćłă§ăăĺż
čŚăăăă¨ăŻćăăŞăă¨ăăăă¨ă§ăă ć¨čŤă¨čĄçŞăĄă˝ăăăŤé˘ăăăă°ăŻăă§ăŤăăăăăăă Deref
ăĺŽčŁ
ăăĺăŤas_ref
ăas_mut
ăŞăŠăŽé常ăŤä¸čŹçăŞĺĺăčż˝ĺ ăăăă¨ăŻĺéĄăŽăăă§ăă辡ăăăŽăĺž
ăŁăŚăăžăă
ăăăăŽćä˝ăŻăĺąéşăŞĺ ´ćăŤé 罎ăăăă¨ăćŁĺ˝ĺăăăŽăŤĺĺăŞé ťĺşŚă§çşçăăžăăďź ďźćŹčłŞçăŤďźăžăăŻăé˘éŁăăćŠč˝ăŽĺŽĺ ¨ăŞăŤăźăăčăŤĺ Ľăăăă¨ăă§ăăăťăŠăžăăŤăă使ç¨ăăăŚăăžăăăďź
ç§ăŻäťăăŽă˛ăźă ăŤăšăăłăćăŁăŚăăăăă§ăďź CanUnpin
ăŻUnpinnable
ăžăăŻăăăŤéĄäźźăăăăŽăŤç˛žçĽçăŤé常ăŤčżăăăă§ăăăăăŚç§ăŽĺ°čąĄăŻĺ¸¸ăŤăłăăĽăăăŁăăăŽăăăŞç¨ŽéĄăŽäżŽéŁžĺăŤçăă˛ăăăŚăăă¨ăăăă¨ă§ăăťă¨ăăŠăŽçšć§ăŻăżă¤ăăĺŽčĄă§ăăă˘ăŻăˇă§ăłă誏ćăăăăăçšć§ĺă implčŞä˝ăŻăăăŽćĺłă§ćéťăŽăcanăăžăăŻă-ableăă§ăă ä˝ăćąşĺŽăăăŚăďźăăăŚăăăăŤč¨čźăăăŚăăçŻĺ˛ă§ăŻĺĺăŻéčŚă§ăŻăăăžăă-IM-not-so-HO-ăăăĺ
Ľĺăăĺż
čŚăŽăăăŚăźăśăźăŻăťă¨ăăŠăăŞăă§ăăăďźăăăă§čłŞĺă解湺ăăăă¨ăŤă¤ăăŚçˇćĽăćăăăă¨ăăĺ§ăăăžăă ç§ăŻăăŽĺŽĺŽĺăŤč弎ăăŚăăžăăăăăŚç§ăŻĺ¤ăăŽäşşă
ăăăă§ăăăă¨ăçĽăŁăŚăăžăďź
@alexcrichton
Unpin
ĺéĄăŽ1ă¤ďźççąăŻăăăăžăăďźăŻăćĺłăăćĺłăăăăłăăĺ¤ăăăăłăĺ¤ăăĺŽĺ ¨ăŤĺŽčĄă§ăăăă¨ăăăă¨ăé ăăç解ă§ăăŞăăă¨ă§ăă "ă
T: Unpin
ăă T
ăŻPin
役éżăĺăăŞăăă¨čăăă¨ăŠăăŞăăžăăďź ćŹĄăŤă Pin<T: Unpin>
ăăăĺ ´ĺăŻă Pin
ĺ
ăŤĺ¤ăăăăăăłçăăŽĺ˝ąéżăĺăăŞăăăăăăłçăăŻäşĺŽä¸ćĺłăăăăžăăă
č¨ăćăăă°ă Unpin
Pin
ä¸ĺăăžăă ćŁç´ăŞă¨ăăăĺ¤ăăŽč°čŤăŽćŤăç§ăŻăăăä¸ç¨ŽăŽĺ
é˘ĺăăăŽă§ăäťă§ăŻçăŤăăŞăŁăŚăăžăă đ
ăăăŽĺ¤ăăŻăä˝ăăăŽćšćłă§ăăźăäżč¨źăŤé˘ăăăăŽă§ăŻăăăžăăďź
Unpin
ĺŽčŁ ăăăă¨ăŻăăăłăăĺé¤ăăăă¨ăćĺłăăăŽă§ăŻăŞăăăăłăăĺé¤ă§ăăăă¨ăćĺłăăžăďźă
ăăăŤĺŻžăă寞ä˝ćłăŻă Send
çšć§ă§ăă ĺ¤ăé俥ăăă¨ăăćĺłă§ăŻăŞăăé俥ă§ăăă¨ăăćĺłă§ăă
@anp CanUnpin
ăŻç´ ć´ăăăĺĺă§ăŻăŞăăă¨ăŤĺćăăžăăç§ăŻăăăčŻăĺĺăčŚă¤ăăăăăŤćĺăĺ°˝ăăăă¨ăăŚăăžăă Unpin
ăŻăăăăĺĺăĺ¤ć´ăăĺż
čŚăăăă¨ç§ăćăăăŽă¨ĺşćŹçăŤĺăççąă§ăăšăŚăŽććĄăćăĄĺăăăăăăŤčŚăăăŽă§ăăăăĺĺĺ¤ć´ăăĺż
čŚăăăă¨ăžă ćăăŚăăäşşăŻăťă¨ăăŠăăŞăăăă§ăă
ăžăăäťăŽăăšăŚăŽĺ¤ć´ă¨ĺć§ăŤăĺŽĺŽĺăĺčťăŤäšăăă¨ăćăĺşăăŚăă ăăăćĽéąăŽăŞăŞăźăšă§ăŻăăăăŻééăăŞăăăŽăŞăŞăźăšăŤăŻăŞăăă揥ăŽăŞăŞăźăšăŽĺčŁăŤăŞăăžăă ă¤ăžăăă§ăăă ăćŠăçé¸ăăăăăŤăăăăăăšăŚăçé¸ăăăăŽăŤ7éąéăăťăź2ăćăăă¨ăăăă¨ă§ăă çˇćĽć§ăĺż čŚă§ăăăă¨ăŤĺćăăžăăăăăăŻăćććĽăžă§ăŤăăă解湺ăăăăă¨ăăçˇćĽć§ă§ăŻăŞăăĺăŤăăăŽçˇćĽć§ăĺżăăŞăă§ăă ăăăă§ăă
@stjepangç§ăăăăčăăŚUnpin
ć
ŁăăŚăăžăăďź ăăŽćçšă§ăŽăăšăŚăŽäťŁćżĺăŻé常ăŤă¤ăžăăŞăăăăŤćăăăăŽă§ăăăčŻăăăăĽăĄăłăăä˝ćăăăă¨ăŤăăžăăă çćłçăŤăŻă Pin
apiăŤă¤ăăŚăăžăçĽăăŞăäşşăčŚă¤ăăŚăĺžă§ä¸č¨ăŽăăăĽăĄăłăăčŞăă§ăĺŚçżăŤĺĺă§ăăăă¨ăĺ確čŞăăăă¨ćăăžăă
ăžăăăăŽĺéĄăŤă¨ăŁăŚçšăŤéčŚă§ăăă¨ćăăŚăăăăăćšĺăăăăăăĽăĄăłăăŽĺŽĺŽĺăćŁĺźăŤăăăăŻăăăă¨ćăăžăă
@rfcbotăŻăăăĽăĄăłăăŽćšĺăŤé˘äżăăŚăăžă
ĺ ˇä˝çăŤăŻăăăčŻăăăăĽăĄăłăăĺż čŚă ă¨ç§ăŻćăăŚăăžăă
P
ăŽDerefMut
ĺŽčŁ
ăŽĺĽç´ăŻăăĺççăŤĺä˝ăăăă¨Pin::new_unchecked
ćć¸ĺăăăŚăăžăăăunsafe
é˘ć°ăŤăŻăĺŽĺ
¨ă§ăŞăççąăŽăłăźăäžăăžăăŻĺ°ăŞăă¨ăă夹ćăăĺŻč˝ć§ăŽăăä¸éŁăŽćé ăŽć確ăŞčŞŹćăĺż
čŚă§ăăPin
ă¨ăŻä˝ăăăăăŚăăăä˝ăćĺłăăăŽăăčś
ăăŚăăă芳細ăŤčŞŹćă§ăăă¨ćăăžăă ăăăăŻä¸čŹçăŞä¸ĺăŽăżă¤ăă§ăŻăŞăăăăŽĺ˝˘ĺźă§ăăăăă Pin
ăĺŽéăŤăăă¨ăă°ĺ
çŠă§ăŠăŽăăăŤä˝żç¨ăăăăăăŞăŠăŽć
ĺ ąă彚çŤă¤ă¨ćăăžăăUnpin
äžăčŚăăăŽă§ăăă ăă¨ăă°ăĺ°ćĽçăŤăŻĺ¤ăăŽăłăłăăăźăżăăăăĺŚçăăĺż
čŚăăăăăăŤćăăăžăăĺć§ăŤăä¸é¨ăŽăłăłăăăźăżăŻçšăŤăăăUnpin
ăăŞăç解ăăăŽăŤĺ˝šçŤă¤ăăăăăžăăăäťăŽäşşăăăăĽăĄăłăăŤčż˝ĺ ăăĺ ˇä˝çăŞĺŽç¨çăŞă˘ă¤ăă ăćăŁăŚăăăăŠăăăçĽăăăă§ăďź
揥ăŤă self
質ĺăas_ref
ă§ćŁĺźăŤăăăăŻăăăăŽă§ăăăăăăŻăăăŤč§Łćąşă§ăăă¨ćăăžăă ďźăăăćŠăćăĄĺşăăă¨ăĺżăăŚçłă訳ăăăžăăďź
@rfcbotăŻčŞĺˇąăĄă˝ăăăŤé˘äżăăžă
ăăăŻă as_ref
ă as_mut
ă get_ref
ă get_mut
ă into_ref
ăăăăłset
ăăăšăŚăŽăĄă˝ăăăŤććĄăăžăă Pin
ăżă¤ăă ăăŽććĄă§ăŻăăĄă˝ăăăŽčĄçŞăŽăăăŤăšăăźăăă¤ăłăżăźăŤĺŻžăăŚăăăčĄăăŞăă¨čż°ăšăŚăăžăăăäťćĽĺŽčŁ
ăăăŚăăPin
APIăŤä¸č˛Ťć§ăăŞăăéŞéăŤăŞăăă¨ăăăăăăă¨ăçľé¨ă示ăăŚăăă¨čż°ăšăŚăăžăă
ăă ăăăăăăŽăĄă˝ăăĺăŻé常ăŤçăăŚçăĺĺă§ăăăă¨ăłăˇăšăă ĺ
¨ä˝ă§ăăčŚăăăžăă libsăăźă ăŻăéĺťăŤçľăăăŽăŞăä¸éŁăŽăă°ăŤééăăžăăăăăă§ăŻăăăŹă¤ăăŽĺŽčŁ
ăŞăŠăčż˝ĺ ăăăăăžăăžăŞăŻăŹăźăăŽć˘ĺăŽăăŹă¤ăăĄă˝ăăă¨ăŽčĄçŞăçşçăăžăă ăăăăŽćšćłăŻăăăŽĺĺăăçšăŤăŞăšăŻăéŤăăăă§ăă ăăăŤăĺĺăćçľçăŤćŠč˝ăăăăăŤăŞăŁăă¨ăăŚăăĺ°ćĽčż˝ĺ ăăăĺĺăŻčĄçŞăŽăŞăšăŻăéŤăăăăĺ°ćĽçăŤPin
ăŤăĄă˝ăăăčż˝ĺ ă§ăăăăŠăăăŻä¸ćă§ăă
ăăŽć ŁçżăăăŽé¸čąăĺčăăăă¨ćăăžăăĺäşşçăŤăŻçšăŤăăŽçľćăĺżé ăăŚăăăăăăăŽĺąéşăĺéżăăăăăŽä¸éçšăčŚă¤ăăăă¨ăă§ăăă°ç´ ć´ăăăă¨ćăăžăă
ăăăŚăç§ăăăăŤĺăçľăă§ăăéăç§ăć°ăĽăăćĺžăŽăă¨ăŻăăăăăăŞăčż éăŤč§Łćąşă§ăăă¨ćăăžă
@rfcbotć¸ĺżľbox-pinnned-vs-box-pin
ĺĺăBox::pin
ăŽăăăŤć¤č¨ăăăŚBox::pinned
ďź Pinned
ăăăł/ăžăăŻPhantomPinned
ăăăŽă§ăĺĺăćťăĺ¤ăŽĺă¨ä¸č´ăăăŽă§ăăă°ăăăăŻç´ ć´ăăăăă¨ăŽăăă§ăă
@alexcrichtonăŞăăˇă§ăłă¨ăăŚMoveFromPin
ăŤĺŻžăăŚçšăŤčŞŹĺžăăăăăŽăŻăăăžăăďź äťĽĺăŻĺĽ˝ćçă ăŁăă¨ćăăžăďźăăăŚč¤ć°ăŽäşşăăăăć°ăŤĺ
ĽăŁăŚăăăăă§ăăďźă č¨é˛ăŽăăăŤăç§ăčŚăăŚăăăăžăăŻCtrl + F-ingă§ăăăŤčŚă¤ăăăă¨ăă§ăăç´ćĽăŽĺ寞ćčŚăŻă ăăăŹăźăşĺ
¨ä˝ă§ăăĺĺăŻé常ăŤĺ調ă§ăăă ďź@withoutboatsďźăă¨ă¨ăč¨čăĺ¤ăăăă ďź @cramertjďźă
ăăăčăăŚăăâŚć
ŁăăŚăăăă¨ăăă˘ăăăźăˇă§ăłăăăŞăä¸ĺŽăŤăŞăŁăŚăăăă¨ăŻčŞăăăăĺžăžăăă äşşéăŻćŹčłŞçăŤä˝ăŤă§ăć
ŁăăäşĺžçăŤĺçĺăăăă¨ăă§ăăžăă ćă
ăŻćçľçăŤăăăŤć
Łăăăžă§ăŤçľäşăăŞăăŁăĺ ´ĺăĺĺăä˝ă§ăăăăŤé˘äżăŞăăăăăŻĺ¤§ăăŞéŠăă ăăă ďźăăăăäťăŽĺ ´ĺăŤä¸ćçăŞăăŽă¨ăăŚexistential type
ăăăŞćăăăŤćŹĄĺăŽĺĺăé¸ćăăŚăć°¸çśçăŤăŞăăŞăăăăŤăăççąă§ăăďź
çľé¨čąĺŻăŞăŚăźăśăźďźç§ăăĄĺ ¨ĺĄă§ăďźďźăŽčŚçšăăăăć°éŽŽăŞé čłăćăŁăŚçŠäşăŤĺăçľăäťăŽăŚăźăśăźăăă誤ăŁăŚçšć¨Šăä¸ăăăă¨ăŻăç§ăăĄăä˝ăăă¨ăŤĺŻžăăŚĺ¸¸ăŤčŚćăăĺż čŚăăăă¨ç§ăćăä¸ç¨ŽăŽééăă§ăă
ăăăŻç˘şăăŤstdlibăŽăšăżă¤ăŤă§ăŻăăăžăăăă CanUnpin
ăŻăăăŽçšĺŽăŽé¨ĺăäťăŽé¨ĺă¨ăŠăŽăăăŤéŠĺăăăăăŠăăăăăăăăć確ăŤăăŚăăăăăŤăćăăžăă
ăăăĽăĄăłăăčŞăžăăŤăĺĺżč
ăŤUnpin
ăŽćĺłă誏ćăăĺĺăçşćăăăă¨ăŻä¸ĺŻč˝ă§ăă Send
ă¨Sync
ăĺĺżč
ăŤăŻç解ăăŤăăă§ăăă Unpin
ă¨ĺć§ăŤăčŚć ăăăăç°Ąć˝ă§ăă ăăăăŽĺĺăŽćĺłăăăăăŞăĺ ´ĺăŻăăăăĽăĄăłăăčŞăĺż
čŚă
@valff確ăăŤăăăŻćŁăăă§ăăăăăăĽăĄăłăăčŞăă§ăăłçăăŽäťçľăżăç解ăăŚăăäşşăŻăăŞăăăžăăă Unpin
ĺĺăŻäžçśă¨ăăŚé大ăŞç˛žçĽçĺ°éŁăĺźă辡ăăăžăăăäťăŽĺĺăŻăăăťăŠĺźă辡ăăăžăăă
@glaebhoerlçłă訳ăăăžăăăăç§ăŻçžĺ¨ăŽUnpin
ăăăMoveFromPin
ăžăăŻCanUnpin
ăăĄăłă§ăă çľčŤăŤéăăăŽăćäźăăă¨ăăŚăăă ăă§ăďź
ç§ăŻçžĺ¨ăŽććĄăç解ăăăă¨ăăžăăăĺ¤ĺăăŽç¨ŽăŽé˛ćĺ ąĺăŻĺ˝ĺăŤăăăă¤ăăŽčż˝ĺ ăŽĺ ăĺ˝ăŚăăă¨ăă§ăăžăă
Drop
ăPin
ăŽä˝ćč
ăŤčż˝ĺ ăŽčŚäťśă課ăăžă§ă Pin
ăŽäżč¨źăĺŽĺŽăăă˘ăăŹăšăŤćĄĺźľăăžăă unsafe fn new_unchecked(pointer: P) -> Pin<P>
ăĺźăłĺşăăăăŤĺż
čŚăŞĺććĄäťśăç´ćĽč¨ĺăăăŚăăă°äžżĺŠă ă¨ćăăžăă Pin
ăä˝ćăăćšćłăç解ăăăă¨ăŻă彟ăăŽćŚĺżľă§ăăimoăç解ăăăŽăŤĺ¤§ăăŤĺ˝šçŤăĄăžăăwe agreed that we are ready to stabilize them with no major API changes.
ă§ĺ§ăžă追补ăŽĺéĄă§č¨ĺăăăŚăăčŚç´ăŤăŻăĺ¤ăăŽĺ¤ăAPIăĺŤăžăăŚăăžăă ĺćăŤăé˘éŁăăDrop
ă¨ăăłăăă¸ă§ăŻăˇă§ăłăŤé˘ăăĺ¤ăăŽć´ĺŻăĺŤăžăăŚăăžăă ăžăăăăŽăŹăăźăăŤăŻăŞăçŽćĄć¸ă1ă§č¨ĺăăăŚăăčż˝ĺ äżč¨źăŽć示çăŞĺŽĺźĺăĺŤăžăăŚăăžăă ăăŽĺ¤ăăŞăŁăć
ĺ ąă¨ć°éŽŽăŞć
ĺ ąăŽçľăżĺăăăŻĺ°ă桡䚹ăăžăăăăăšăŚăŽć
ĺ ąăăăŽĺéĄăŤç§ťĺăăăăĺ¤ă掾č˝ă示ăăă¨ăć¤č¨ăăŚăă ăăăslight extension
ă¨ĺźă°ăăŚăăăŽă§ăăăăăŞăăă˘ăŚăăăä˝ăăăŽćšćłăăăă¨ćăăžăăă ĺşĺŽăăă¨ăăă¤ăłăżăăăăăăăăăžă§ăăŽăă¤ăłăżăŽĺçść
ăä¸ĺşŚäżćăăăăăăăăŽĺçść
ăăăé常ăŽăçść
ăŤćťăćšćłăăăăžăă ĺŽéăăăăŻç§ăćĺăŤUnpin
ăăăăă¨ćăŁăăă¨Unpin
ăă Unpin
ăŻăăăłçść
ăĺż
čŚă¨ăăĺ
é¨ä¸ĺ¤ćĄäťśăĺé¤ăăĺăŽćä˝ă¨ćˇˇĺăăăĺŻč˝ć§ăăăăžăďź Drop
ă˝ăăăăźă¸ă§ăłăŞăŠďźă ăć確ĺďźç§ăŻĺäşşçăŤäťăŽĺĺăăăMoveFromPin
ă弽ăżăžăăăăăăŻééăăŞă人塼çă§ä¸ć źĺĽ˝ă§ăă
@alexcrichtonăŤăăŁăŚăă§ăŤčŚćąăăăŚăăăăăĽăĄăłăăŽćšĺăŤĺ ăăŚăé ăŤćľŽăăśä¸ťčŚăŞĺŽç¨çăŞĺ
ˇä˝çăŞĺŽç¨çăŞé
çŽăŻă map_unchecked
ă¨map_unchecked_mut
ăăłć役ăŽăăŁăźăŤăăŤăźăŤăŽčĺžăŤăăççąă誏ćăăăă¨ă§ăă 揥ăŽăăăŞăăŽďź
ăăłăŻăĺç §ăăăăăźăżăăăăăăăăăžă§ç§ťĺăăŞăăă¨ăç´ćăăžăă ć§é ä˝ăŽăăŁăźăŤăăŻăĺŤăžăăŚăăć§é ä˝ăŽĺžăŤĺé¤ăăăăăăăăłăŽçść ăŻăć§é ä˝čŞä˝ăŽ
Drop
ĺŽčŁ ăčś ăăŚćĄĺźľăăăžăă ăăŁăźăŤăăŤć役ăăă¨ăć§é ä˝ăăšăăŠăŻăżĺ ă§ăăŁăźăŤăăă秝ĺăăŞăăă¨ăç´ćăăăžăă
čŞĺć´žçăăźăŤăźçšć§ăŽĺĺElidePin
ăŻăŠăă§ăăďź
ĺăŻĺ¸¸ăŤĺşĺŽăăăŚăăŞăăăŽăăăŤćąăăăăăĺşĺŽăăăŚăăŞăăăŽăăăŤĺä˝ăăăă¨ăăăăăžăă ăžăă !ElidePin
ăé常ăŤć確ăŞăăă§ăăă丝茳çăăăăăžăăă
ć¨ćşăăźăŤăźăŤăŻăăăłçăăç解ăăăăăŽĺŽĺ
¨ăŞĺĺăăăăžăăă Pinned
ăŻăĺŤăžăăŚăăć§é ä˝čŞä˝ăĺşĺŽăăăŚăăă¨ăăćŚĺżľăĺźăłčľˇăăăŚăăăăă§ăăăĺşĺŽăŻăă¤ăłăżăźăŤéŠç¨ăăăć示çăŞă˘ăŻăˇă§ăłăŽĺžă§ăŽăżéŠç¨ăăăžăă ăăăŻăăăťăŠéčŚă§ăŻăăăžăăăăéčŚă§ăŻăăăžăăăçšăŤăčŞĺˇąĺç
§ĺăŽĺŽčŁ
ă§ćĺăŤééăăĺă§ăăĺŻč˝ć§ăăăăăă§ăă
MoveFromUnpin
/ RemoveFromUnpin
ăŤĺŻžăăç§ăŽä¸čŹçăŞĺ寞ăŻăăăăăăăžăăŤăč¨čăĺ¤ăăăŚăćĺăŽFuture
ĺŽčŁ
ăŽäşşé塼ĺŚăĺžéăăăă¨ăăăă¨ă§ăă CanUnpin
/ DePin
ăŠăĄăăç§ăŤăŻĺéĄăŞăăăă§ă- Unpin
ăRead
/ Write
ăŽăăżăźăłăŤĺžăŁăŚăăăă¨ăăăć確ăŤăŞăŁăăăăăŽăŤă¨ćăăžă/çă ăăăăăăăŻäşşă
ăŤă¨ăŁăŚç´ćçă§ăŻăŞăăăăŤćăăăăŽă§ăć§ćä¸ăŽĺĄŠăŽăăăŤčŚăăăŤăăăăăć確ăŤăăăăŽă+1ăăžăă
NotWhateverUnpinBecomes
ăăăăăPinned
ăŽćčŻăŽĺĺă§ăăăă¨ăŤĺćăăžăă ă¨ăŻč¨ăăăŽăŽă Adhere
ăŻă注ćăăăă¨ă¨ĺşĺˇăăăă¨ăŽä¸Ąćšăćĺłăăžăă ďźslightly_smiling_faceďź
CanUnpin / DePinăŻăŠăĄăăç§ăŤăŻĺéĄăŞăăăă§ă-UnpinăRead / Write / etcăŽăăżăźăłăŤĺžăŁăŚăăăă¨ăăăć確ăŤăŞăŁăăăăăŽăŤă¨ćăăžă
Read
ă¨ăŻç°ăŞăă Unpin
éŁăăăăŚăăăă¨ăŽ1ă¤ăŻăăăăăăźăŤăźçšć§ă§ăăă¨ăăăă¨ă ă¨ćăăžăă Read
ăŻăăĄă˝ăăRead::read
ăăăăăăç°ĄĺăŤç解ă§ăăžăăçĽăŁăŚăăĺż
čŚăŽăăăă¨ăŻăăšăŚă trait
ăžăă ĺ ´ĺăŻx
ă§ăRead
ç§ăŻăç§ăĺźăłĺşăăă¨ăă§ăăăă¨ăç解x.read()
-ĺć§ăŤwrite
ăŽăăăŤWrite
ăă¨ă誏ćăăăŽăŻéŁăăăăŞăŠăăăŽăX
ăUnpin
X
ĺŽčŁ
ăăă¨ă Pin<Ptr<X>>
ăDerefMut
ĺŽčŁ
ăăăă¨ăŤăŞăăžăăă¤ăžăă X
ăăăŤćąăăă¨ăă§ăăžăă
Read :: readăĄă˝ăăăăăăăăčŞăżĺăăŻç°ĄĺăŤç解ă§ăăžăă
auto trait
ĺŽçžŠ+ GATăŤĺ¸¸ăŤéŠç¨ĺŻč˝ăŞăĄă˝ăăăčż˝ĺ ă§ăăă°ă Unpin::unpin
- fn unpin<P: DerefFamily>(self: Pin<P::Deref<Self>>) -> P::Deref<Self>
ďźăćă¤ăă¨ăă§ăăžăă .....čăç´ăăŚăżăă¨ăăăă§čŞ°ăă桡䚹ăăăă¨ăŻăŞăă¨ćăăžă;ďź
ďźăăŁă¨ćˇąĺťăŞăă¨ăŤă Pin<P<T>>
ăăP<T>
秝čĄăăăăăŤPin::unpin
ăăľăăźăăăžăďź
ăăłăă秝ĺăăăăăŽPin :: unpinăăľăăźăăăžă
>ăăP
ăăăŻăçžĺ¨ăŽĺĺčŞä˝ă¨ĺăăăăŤăç§ăŽé ăŽä¸ăŽ2ă¤ăŽç¨čŞă桡䚹ăăăžăă unpin
ăŻăăĄă˝ăăfn unborrow(&'_ T)
ăžăăŻfn unmove(??)
ăăăăăŽăăăŤćŻčźăăăăăŤăĺçść
ăŽäżč¨źăéăŤăăăăăŤčăăăžăă pin
ăŻăĺă襨ăăĄă˘ăŞăDrop::drop
edăŤăŞăăžă§äżč¨źăćäžăăăăăĺŽéăŤăŻçść
ăéăŤăăăă¨ăŻăăăžăăăĺăŻăäťăŽăăšăŚăŽčĄ¨çžăĺçăŽäżč¨źăçśćăăăă¨ăäżč¨źăăă ăă§ăăăăăăăŁăŚăăăçĄčŚă§ăăžăă ă ăăăŻăăăźăŤăźăŽçšć§ă¨io::Read
ăăăŞăăŽă¨ăŽä¸ťăŞéăă§ăăăăžăă 1ă¤ăŻăłăłăă¤ăŠăźăžăăŻč¨čŞăŽćä˝ăćĺšăŤăăăă1ă¤ăŻăăă°ăŠăăźăŽćä˝ăćĺšăŤăăžăă
ăăăŤăăăăŻçžĺ¨ăćŁăăăżă¤ăăłă°ă ăă§ăŻćŁç˘şăŤčĄ¨çžă§ăăŞăă¨ăă大ăăŞăă¤ăłăă§ăă ćźçŽunpin
ăĺźăłĺşăă¨ăéé˘ć°pin
ăăăŁăăăăŤčăăăžăă ăăăŻé˘ć°ă§ăăăăăăăŽăăăŞĺşĺŽč§Łé¤ćä˝ăä˝ăăăŽĺ˝˘ă§č¨çŽä˝ćĽăŤăă¤ăłăăăăŚăăăă¨ăĺ°ă誤ăŁăŚç¤şĺăăŚăăžăăăă¨ăă°ăăă確çŤăăăĺ˝ĺčŚĺăŤĺžăăă¨ă§ăăăŽçšă§into_pointer()
ćšăćĺŠă§ăă
ćĺžăŤăč¨çŽä˝ćĽăäź´ăunpin
é˘ć°ăćă¤ăżă¤ăăŽĺŻč˝ć§ăăăă¨ćăăžăă é常ăŤçšćŽăŞĺ
é¨ä¸ĺ¤ćĄäťśăćă¤ăżă¤ăăŻăă¤ăłăżăźăă§ă¤ăšfn unpin(self: Pin<&'a mut T>) -> &'a mut
ăćäžă§ăăăăăŤĺ
é¨çść
ăă俎ćŁăă§ăăĺŻč˝ć§ăăăăžăăăăŽĺ ´ĺă Pin
ăăšăŚăŽäżč¨źăä¸ĺŽćé夹ăăăžăă 'a
ă ăăŽĺ ´ĺăä¸č¨ăŽä¸ĄćšăŽăă¤ăłăăŻéŠç¨ăăăŞăăŞăăžăă ăăŽăăăŞé˘ć°ăŻăĺăăĄă˘ăŞä˝ç˝ŽăŤăăăăăăŚĺć§çŻăăăŽă¨ĺçăŽĺšćăăăăăŽăăăŤćłĺă§ăăžăďźăăăăŁăŚăĺŽéăŤăŻĺăŽçść
ăĺé¤ăăžăďźă ăžăăčŞĺˇąĺç
§ăĺçĺ˛ăĺ˝ăŚăŤç§ťĺăăăŞăŠăč¨çŽăĺż
čŚăŤăŞăĺ ´ĺăăăăžăă
ç´ăăăăĺĺăŤăăŁăŚăăŠă¤ăăŠăŞăŽč¨č¨č ăĺŽčŁ č ăăăă2ă¤ăŽă˘ă¤ăă˘ă桡ĺăăŚăç´ăăăăăŞăĺĺăé¸ćăăăŽăéŁăăăŞăă¨ăăăăăăăŻćŽĺżľăŞăă¨ă§ăă
MoveFromUnpin / RemoveFromUnpinăŤĺŻžăăç§ăŽä¸čŹçăŞĺ寞ăŻăăăăăăăžăăŤăč¨čăĺ¤ăăăŚăćĺăŽĺ°ćĽăŽĺŽčŁ ăŽäşşé塼ĺŚăĺžéăăăă¨ăăăă¨ă§ăă
çšăŤMoveFromPin
ăŽĺ ´ĺăŻăăăăĺ˝ăŚăŻăžăă¨ăŻćăăžăăăăăăŻăç§ăŤă¨ăŁăŚăŻĺççă¨ćăăăžăăăŠăŽăăăŞç¨ŽéĄăŽăšăăźăăžăăŻăă ăŽăŞăźăăłăłăăŞăźăă§ăăă¨ăŤăăĺéĄăŻăťă¨ăăŠăăăžăăă
äşşé塼ĺŚăŽéčŚăŞé¨ĺăŽ1ă¤ăŻăăłăźăăŽĺŻčŞć§ă¨ç解ć§ă§ăăăĺż
čŚăăăăžăă RustăŻăçŠäşăçŠćĽľçăŤççĽăăăă¨ďź fn
ă mut
ăŞăŠďźăŤĺŻžăăŚéĺťăŤĺ°ăăŽćšĺ¤ăăă§ăŤĺăăŚăăăä¸é¨ăŽăłăźăăčŞăżăŤăăăŞăŁăŚăăžăă ç解ăăăŽăăăăŤč¤éă§ăăťă¨ăăŠăŽăŚăźăśăźăŤă¨ăŁăŚăăăăŞçŽçăéćăăćŚĺżľăŽĺ ´ĺăăăĺéˇă§čŞŹćçăŞĺĺă使ç¨ăăăă¨ăŻĺŽĺ
¨ăŤĺăĺ
ĽăăăăăŻăă§ăă
@rfcbotăŻăĺĺăŽĺşĺŽč§Łé¤ă解湺ăăžă
ăăŚăç§ăŻăă°ăăç
Žčžźăă§ăăŚăăăăŤă¤ăăŚç´ćĽčŠąăăžăăă ĺ°ăŞăă¨ăUnpin
ă¨ăăĺĺăăăźăŤăźăŽçšć§ă¨ăăŚä˝żç¨ăăăă¨ă§ăĺäşşçăŤăŻĺżŤéŠăŤăŞăăžăăă ăăŽçľćăç§ăŻăăăăăłă°ăŽç°č°ăĺé¤ăăžăďźăă ăălibsăăźă ăŽäťăŽăĄăłăăźăŽć°ćăĄăéăĺ ´ĺăŻăăçĽăăăă ăăďźďź
ç§ăUnpin
ăăŠăçăă丝ăŞççąăŻăĺşćŹçăŤăă§ăŤä¸ă§Unpin
ăďźăžăăŻĺ°ăŞăă¨ăç§ăŽćčŚă§ăŻďźçăăŚăăć
Łç¨çăŞĺşćşăćşăăăŚăăžăăă
ăăăŽçšć§ăŽĺĺăčŚăă°ăăă§ăăăăä˝ăăăăŽăçĽăăăăă¨ăăăăčŻăĺĺăăăă¨ç§ăŻăžă 俥ăăŚăăžăăăăăăăăă§č§ŁćąşăăćŁăăĺéĄă§ăŻăŞăă¨ćăăžăă çžćçšă§ăŻăĺ°ăŞăă¨ăçžćçšă§ăŻăăăŽçšć§ăŽĺĽăŽĺĺăç解ăăăă¨ăŻă§ăăžăăăăăăăć
Łç¨çăŞăăŽă§ăăăĺĽăŽĺéĄă解湺ăăçšć§ĺăŤĺăćżăăŚăăžăă Unpin
ç解ăăăă¨ăŻă Send
ăSync
Unpin
ă¨ĺăă§ăăä˝ă辡ăăŁăŚăăăŽăăĺŽĺ
¨ăŤç解ăăăŤăŻăăăăĽăĄăłăăčŞăĺż
čŚăăăăžăă
ăă1ă¤ăŽć確ăŞăă¤ăłăă¨ăăŚăăăă¤ăăŽăăăăăŻăăç°č°ăăăŞăšăăăžăăăăăăăăŻăăăăăŻăăç°č°čŞä˝ăăăTODOă˘ă¤ăă ă§ăă ăăăŞăŤéˇăăšăŹăăăăăă˛ăźăăăç´ ć´ăăăćšćłăăŞăă ăă§ăďź ăăăăćĺłă§ăŻăFCPă1éąéăťăŠçľéăăçść ă§ăăă¤ă§ăĺŽĺŽĺPRăć稿ăăŚăĺéĄăŞăă¨ćăăžăă ăťăŤă/ăăł/ăăłçăăŤé˘ăăćĺžăŽăă¤ăłăăŻăăăă§ç°ĄĺăŤčŞŹćă§ăăžăďźĺż čŚăŞĺ ´ĺă§ăăä¸č¨ăŽććĄă¨ăăŚćŽăăă¨ăă§ăăžăďźă
ăăŽĺ ´ĺăçšăŤĺŽĺŽĺăŽĺććĄäťśă§ăŻăŞăă¨ćăăžăă ăăăăŽăżă¤ăăĺŽĺŽăăĺăŤăăăĽăĄăłăăčż˝ĺ ăăăăăŽĺŽĺ ¨ăŞăľă¤ăŻăŤďź6éąéďźăăăăĺŽĺ ¨ăŞéĺć/ĺž ćŠăšăăźăŞăźăĺŽĺŽăăĺăŤăăăă§ăăăĽăĄăłăă埡ĺăăăăăŤăăăŤéˇăćéăăăăžăă ăăăŻäťăăăŤăăăăŽăćšĺăăăăăŽćéăŽč˛ čˇă§ăăăăăăŚäťăăăŤăăăăŽăŻăă§ăŤé常ăŤĺ˝šăŤçŤăĄăžăďź
ăăă§ăć
Łç¨ĺĽăă¨ăŻăŠăăăćĺłă§ăăďź Reloc[ate]
ă Escape
ă Evade
ă Pluck
ăăžăăŻRoam
ăŽăŚăăăŁăŞăăăŁăăŻă¨ăŻä˝ă§ăăďź ăăăăŻăăšăŚĺčŠă§ăăăäşéĺŚĺŽăŽĺéĄăăăă¨čŞ¤č§Łăăăăă¨ăŻăăăžăăă
@alexcrichton Unpin
ăDepin
ăDePin
ăăăć
Łç¨çă§ăăă¨čŚăŞăăăççąăŻăăăžăăďź
Depin
ăŻé常ăŤĺ
ĺŽăŞäťŁćżć掾ă§ăăă Unpin
ă¨ĺă粞çĽçăŞĺéĄăĺźă辡ăăăă¨ăŻăŞăă¨ćăăžăă
ĺç´ăŞççąăŽ1ă¤ăŻădepinăĺčŞă§ăŻăŞăăunpinăĺčŞă§ăăă¨ăăăă¨ăăăăăžăăă ĺäşşçăŤăŻă Unpin
ç解ăăăŽăŤĺéĄăŻăăăžăăă äťăŽăăźăŤăźçšć§ăŽĺ˝ĺă¨ä¸č´ăăă¨ćăăžăă
@jimmycuadra RustăŤăŻăstdlibăĺŤăăăćŹçŠăŽăĺčŞă§ăŻăŞăĺĺăăăăăăăăžăă
ăăăăăăĺĺăĺĽăŽĺĺăăăé¸ăśéčŚăŞççąă¨čăăăăă¨ăăăăç§ăŻéŠăăžăă
@PauanăăăŻéčŚăŞççąă§ăă čąčŞăćŻĺ˝čŞă¨ăăç§ăŤă¨ăŁăŚă Depin
ăŻăĺşĺŽă解é¤ăăă¨ăăč¨čăĺĺ¨ăăăă¨ăĺżăăŚăăăăä˝ăä¸ăăăă¨ăăăăăŤčăăăžăă ććłçăŤăŻćăăăŤééăŁăŚăăăăăŤćăăăžăăăăăłăĺ¤ăăă¨ăăčąčŞăŽĺčŞăŻăăăłăĺ¤ăăă§ăă
čŻăäžăăŻăăăăăŻč§Łé¤ăă§ăŻăŞăăăăăŻč§Łé¤ăă¨ăăAPIăăăĺ ´ĺă§ăă
@jaredr by "idiomatic"Read
ăăăłWrite
çšć§ăŽăăăŤăć¨ćşăŠă¤ăăŠăŞăŽç˘şçŤăăăčŚĺăŤĺžăăă¨ăćĺłăăžăă č¨čă§ăŻăŞăĺĺăĺčŠăĺŻč˝ăŞĺ ´ĺăŻçăăçśćłăŤéŠăăć
Łçżăăăăžăă
ăăŞăăććĄăăăăăŞĺĺăŻăăšăŚĺŻč˝ă§ăăă Unpin
ďźăžăăŻĺ°ăŞăă¨ăç§ăŻăăćăăžăďźăăăŽçšĺŽăŽă˘ăŻăˇă§ăłăŤćăéŠĺă§ăďźăăăŽăżă¤ăăŽĺşĺŽă解é¤ă§ăăžăăäżč¨źďźă äťäşşăŽçˇŠăĺ瞊čŞăŞăăUnpin
ăç§ăŻä¸ťăŤă ăăăăłč§Łé¤ăé˘ăăĺčŞăăĺĺăĺ¤ć´ăăŚăăă¨ćăă¨ćă
ă¨ĺăćĽçśäźăăŚăăŞăPin
ăŽăăăŤUnpin
ăăžăă
@Pauan @withoutboatsăŤĺćăăžăă Depin
ăŻUnpin
ă¨ĺć§ăŤă¸ăŁă¤ăăŽăăăŤăŻčăăăžăăă
@aturonăŻhttps://github.com/rust-lang/rfcs/pull/2592#issuecomment-438873636ăŤćŹĄăŽăăăŤč¨čźăăăŚăăžăă
Pin
ăŽä˝żç¨ăŻă&self
ă¨&mut self
ăžăăă éˇćçăŤăŻăPin
čŞä˝ăč¨čŞăľăăźăăĺăăĺĽĺăŽĺç §ă˘ăźăăŤăŞăĺŻč˝ć§ăăăăžăă ăăăăăšăŚăŽĺ ´ĺăŤăăăŚă署ĺă§äźăăăăŚăăăŽăŻăĺźăłĺşăĺ ăŤäťä¸ăăăŚăăă˘ăŻăťăšč¨ąĺŻă§ăăăPin
ăŻĺç §ăă秝ĺăăăă¨ăçŚăăŚăăžăă
襨é˘ä¸ăăăăŻăă¤ăăŁăăŽ&pin
ăżă¤ăăä˝ăăćăăžă...ăăăăăăăPin<&mut T>
ăŞăŠă¨ăŠăŽăăăŤä¸č´ăăăă確čŞăăŚăă ăăă @withoutboatsă¨ăŽç§ăŽäźčŠąăŤçšăŤ@cramertjăŤă彟ăăŻăăšăŚăŽč¨čŞăľăăźăă¨ăŠăŽăăăŤćă
ăŻăăăăĺžăăă¨ăă§ăăă¨ĺç
§ăŽăťăăŹăźăă˘ăźăăŽčăćšăŤă¤ăăŚăŻăăĺăăăŞăăŁăPin<T>
ă
pin
ĺŽĺŽăăăĺăŤăăăăăŽăăĽăźă調ć´ăăŚăĺăăăźă¸ăŤăăăă¨ă確čŞăăăŽă賢ćă§ăă ăăŽéčŚăŞă¤ăłăăŠăšăăŠăŻăăŁă ă§ăăăăç§ăŻä¸ťăŤă˘ăźăăłăăăăćĄĺźľăăăăźăă¨ăă¤ăŠăźăăăăăééăéăăă¨ăćăă§ăăžăă
äťăŽäşşăŻăUnpinăŽĺ瞊čŞă§ăŻăăăžăăăă丝ăŤăunpinăă¨ăăĺčŞăăĺĺăĺ¤ć´ăăŚăăă ăă§ăăăUnpină¨ĺăćĽçśăPină¨äźăăŞăĺ ´ĺăăăă¨ćăăžăă
@alexcrichtonăăăŻĺŽéăŤăŻčŻăăă¨ă ă¨ćăăžăăďź ĺć§ăŤSend
秝ĺăă/ăłăăźďź=ďźăŽćä˝ă Sync
ĺăăŚďźďźďźćä˝ă ăăśăăăăŽăăăŞćĽçśăŻĺŽéăŤăăŁă¨ćˇˇäšąăĺźă辡ăăăŚăăžăăďź
@ crlf0710ăăăăăžăăďź ç§čŞčşŤă§ăăăăăŽăăăŞă¤ăŞăăăŤĺćăăăăŠăăăŻăăăăžăăă Send
ă¨Sync
ăŻăăăăăćĺšăŤăăŚăăăă¨ďźäťăŽăšăŹăăăŤăżă¤ăăăé俥ăăăăšăŹăăéă§ă˘ăŻăťăšăăĺćăăăďźăŤă¤ăăŚčŠłăă誏ćăăŚăăžăăĺĺăäťăăă¨ăăŻăăăćä˝ăžăăŻĺĽăŽćä˝ăŽčżăăŤĺĺăäťăăăă¨ăŻéżăăŚăă ăă
@alexcrichtonćŁç˘şăŤďź ăăăăŁăŚăăăŽçšć§ăŻăăăăä˝ăĺŻč˝ăŤăăŚăăăŽăăŤă¤ăăŚăăăăŻăă§ăă ďź "ĺźăŁčśă ďźăăă§ăŻĺčŠďź Pin
ďźă ç§ăŻčąčŞăćŻĺ˝čŞă¨ăŻăăŚăăžăăăă pin
ăăăĺşĺŽă解é¤ăăăăŽăŻĺ°ă...ĺ¤ă ă¨ćăăžăăďź
@ crlf0710ăăăăăăŹă¤ăăćĺšăŤăăăŽăŻăăăłăăăŽ<moving>
ăŞăăăăŽ<moving out of a Pin>
ă§ăă moveă¨moveăŽĺ瞊čŞăŽĺéĄăŻăăăŹă¤ăăăżă¤ăăŽç§ťĺč˝ĺăĺśĺžĄăăăă¨ăćĺłăăžăăăăăăŻĺŽčĄăăžăăă ăăłă¸ăŽćĽçśăŻăçšć§ăĺŽéăŤä˝ăăăăăç解ăăăăăŤä¸ĺŻćŹ ă§ăă
ăăăăŁăŚăăăŽçšć§ăŽćăć Łç¨çăŞĺĺăŻăăăăłăă秝ĺăăăă¨ăăćĺłăŽĺčŠă§ăăăăăăłăĺ¤ăăă¨ăăč¨čăŻç§ăŤă¨ăŁăŚé常ăŤćç˝ă§ăă ăŚăŁăŻăˇă§ăăŞăźăŽăĺşĺŽč§Łé¤ăăŽĺŽçžŠăŻćŹĄăŽă¨ăăă§ăă
- ăăłăĺ¤ăăŚĺ¤ăăžăă
- ďźć¨ç§ťçăăłăłăăĽăźăăŁăłă°ăă°ăŠăăŁăŤăŤăŚăźăśăźă¤ăłăżăźăă§ă¤ăšďźäťĽĺăŤĺşĺŽăăăĺ ´ćăăďźă˘ă¤ăłăłăă˘ăăŞăąăźăˇă§ăłăŞăŠďźăĺăé˘ăă
@withoutboats誏ćăăŚăăăŚăăăă¨ăďź ĺŽéăç§ăŻăăŽUnpin
ĺĺăăžăăŻéăłăăăźă ăćçľçăŤćąşĺŽăăĺĺăĺăĺ
Ľăăăă¨ăă§ăăă¨ćăăžăăăăłăżă¤ăăŽĺŽĺŽĺăăžăŁăăăăăăŻăăăăŞăăŽă§ăă秝ĺăăŞăŠăŽć¸ĺżľăĺŽĺ
¨ăŤç解ăăŚăăžăă
ăŠăăăŤăăăăăăŞăçš°ăčżăăăăăăăăŤćăăžăă ăăăŚç§ăŻčŞĺčŞčşŤă誏ĺžăăŞăăă°ăŞăăžăăďźăăăŻăăăłçăă§ăăŞăăă¨ăăćĺłă§ăŻăŞăăăăŽéă§ăă ăăăćçľćąşĺŽă§ăăăŞăăăă°ăăăăŚç§ăŻăăăŤć Łăăă§ăăăă
ĺćăŤăćĺžăŽććĄăăăăŚăă ăăăĺŽéăä¸č¨ăŽDetach
ĺčŠăăĺ°ăä¸čŹçăăăžăăăé常ăŤĺŞăăŚăăă¨ćăăžăă ç§ăč¨ăŁăăăăŤăç§ăŻăă¤ăăŁăăšăăźăŤăźă§ăŻăŞăăŽă§ăäťăŽäşşăŽăăăŤčŠąăăă¨ăŻă§ăăžăăă ăĄăăŁă¨ăăă˘ă¤ăă˘ă¨ăăŚčŚăŚăă ăăă
ç§ăŻĺŽĺ ¨ăŞäşăăŤç´ ăŞăăłçăăăăć役ăŤă¤ăăŚčăăŚăăŚăăăăĺŻč˝ăŤăăăăăăăŞăă˘ă¤ăă˘ăćăă¤ăăžăăă ăăăŻăĺşĺŽăăăĺŻĺ¤ĺˇŚčžşĺ¤ăŤĺŻžăăăăăăłă°ăăˇăăĽăŹăźăăă
pin_proj! { let MyStruct { field1, field2 } = a_pinned_mutable_reference; }
Pin<&mut MyStruct>
ăăăŁăźăŤăă¸ăŽĺşĺŽăăăĺŻĺ¤ĺç
§ăŤĺ解ăăžăă
ăăăĺŽĺ ¨ă§ä˝żç¨ĺŻč˝ăŤăăăŤăŻăäťăŤ2ă¤ăŽăăŽăĺż čŚă§ăă
Unpin
ăăăŁăźăŤăăăăźăŻăăăăăŽKite
ăżă¤ăUnpin
ĺŽĺ
¨ă§ăŞăăăŽăŤăăĺžč
ăŻăć役ăŽĺŽĺ
¨ć§ăŽăăăŤĺż
čŚă§ăă ăăăăŞăăă°ăăăăłçăăăăć役ă§Kite
ăăĺŽĺ
¨ăŤĺŽçžŠă§ăăžăăăăăăŻĺŽéăŤăŻééăŁăŚăăžăă
ăăăĺżľé ăŤç˝ŽăăŚăĺŽĺŽĺăăĺăŤUnpin
ĺŽĺ
¨ă§ăŞăăăŚăäťăŽäžżĺŠăŞćä˝ăĺŽĺ
¨ăŤăăä˝ĺ°ăćŽăăă¨ăććĄăăžăă
@qnighyăżă¤ăăDrop
ĺŽčŁ
ăŽĺşĺŽäżč¨źăŤéĺăăĺŻč˝ć§ăăăăăă Drop
ăŻUnpin
ă¨ĺçăŤĺźˇĺăŤăŞăăžăă Unpin
ĺŽĺ
¨ă§ăŞăăăŚăăčż˝ĺ ăŽăłăźăăŻĺŽĺ
¨ăŤăŞăăžăăă Drop
ăĺŽĺ
¨ă§ăăăĺ¤ć´ă§ăăŞăăăă§ăă ăăăŤă¤ăăŚăŻčż˝čˇĄăŽĺéĄăŤă¤ăăŚĺ¤ăăŽăă¨ă芹ăăžăăăăăăŽăšăŹăăă§ăč¨ĺăăăŚăăžăă
ĺşćŹçăŤăăăłăăă¸ă§ăŻăˇă§ăłăŻăäťćĽăŽRustă§ăŻčĄ¨çžă§ăăŞăçšĺŽăŽč˛ ăŽĺ˘çă襨ćăăćŠč˝ăăŞăăă°ĺŽĺ ¨ăŤăăăă¨ăŻă§ăăžăăă
@ crlf0710
ĺćăŤăćĺžăŽććĄăăăăŚăă ăăăĺŽéăä¸č¨ăŽDetachĺčŠăăĺ°ăä¸čŹçăăăžăăăé常ăŤĺŞăăŚăăă¨ćăăžăă ç§ăč¨ăŁăăăăŤăç§ăŻăă¤ăăŁăăšăăźăŤăźă§ăŻăŞăăŽă§ăäťăŽäşşăŽăăăŤčŠąăăă¨ăŻă§ăăžăăă ăĄăăŁă¨ăăă˘ă¤ăă˘ă¨ăăŚčŚăŚăă ăăă
ăăżăăăŻă秝ĺăĺé 罎ăŞăŠăŽĺĺăăăăŻăăăŤĺŞăăŚăăăăăŤčŚăăžăăăăăżăăăĄăżăăĄăźăŽäťăŽĺŻč˝ăŞä˝żç¨ćłă¨çŤśĺăăŚăăăăă§ăďźă¨ăšăąăźăăăă¨ăšăąăźăĺćăăŞăŠă¨çŤśĺăăĺŻč˝ć§ăăăăŽă¨ĺć§ďźă ăăźăżăăłăłăăĽăźăżăľă¤ă¨ăłăšăŽäťăŽăăźăżă¨ăŠăŽăăăŤé˘éŁăăăăŤă¤ăăŚăŻăăĄăżăăĄăźăé常ăŤĺ¤ăăăăUnpinăŽăă1ă¤ăŽć°ăăĺŠçšăčăăăăăăžăăăăăłăăĄăżăăĄăźăŤăăŁăăă¨ĺăčžźăăă¨ă§ăĺ°ćĽăŽăĄăżăăĄăźč¨čŞăŽăăăŽăšăăźăšăĺ ćăăžăăă DetachăEscapeăRelocateăŞăŠăŽĺĺăŽăăăŤăĺĽăŽçŽçă§ä˝żç¨ăăĺż čŚăăăĺ ´ĺăăăăžăă
@withoutboatsăăŽăă¤ăŻăˇă§ăăă¸ăŽĺĺăćčłăŤă¤ăăŚăŻçšăŤĺĽ˝ăżăŻăăăžăăăăčĺłăăăăžăă Detach
ăŻäťăŤăŠăŽăăăŞçŽçăŤéŠĺăăžăăďźć¨ć¸Źăăĺ ´ĺ...ďźďź
@Centrilć確ăŞăŚăźăšăąăźăšăŻčăăŚăăžăăăăăă¨ăă°ăç ´ĺŁăŤé˘éŁăăăăă¤ăăŽăŚăźăšăąăźăšăćłĺăăăă¨ăă§ăăžăă
@withoutboatsăăă§ăăă äšžćŻďź
ăŚăŁăŻăˇă§ăăŞăźă¨ăłăăŞăŻăŽĺ˝ĺćŁĺ˝ĺăăăăăŽćčŻăŽĺćŠă§ăăĺ ´ĺ@withoutboatsăŻç§ăŻăăăăŞăUnpin
ćĺšăŤăăăŤăŻmove from a pin
ă çŠçç襨çžăŽćŻĺŠăŻăRustă§ç§ťĺăăŚăăä¸çăŽăŞăă¸ă§ăŻăă弪ăăăŞăă¨ăăäşĺŽăŤčŚăăă§ăăžăă ăăćŁç˘şăŤăŻăĺşĺŽăăăăă¤ăłăżăăupinningăăăŚăăĺç
§ăăăăĄă˘ăŞăĺśĺžĄă§ăăžăăă T
ăŞăă¸ă§ăŻă襨çžăĺźăçśăĺż
čŚă§ăăăăă¤ăłăżăŽăťăăłăăŁăŻăšăŤăăŁăŚäżč¨źăăăăăăăăŽĺ˛ăĺ˝ăŚă¨ćĺšć§ăăăăžăă ăăăăŁăŚăăăłçăă解é¤ăăŚăăăăăŻăšĺ解é¤ăŽăăăŤăĺŽĺ
¨ăŤĺśĺžĄăăăT
襨çžăŻĺžăăăžăăă ăăăŚă moving
ăŤé˘ăăŚunpinning
ăĺŽçžŠăăčžć¸ă¨ăłăăŞăŻăĺŽéăŤăŻăăăŽăăăŞĺĺăŽćŁĺ˝ĺ䝼ä¸ăŽćˇˇäšąăŽä¸é¨ă§ăă
ććĄăăăAPIă§ăŻăăŠăŽăĄă˝ăăăăăŽăăăŞĺšćăŻăăăžăăďźăăăŚăăăłăŽçŻĺ˛ăŤăĺŤăžăăŚăăžăăďźă ăă¨ăă°ă Pin<Box<T>>
ăBox<T>
ďźăăăŤăŻT
ďźç§ťčĄăăĺŽĺ
¨ăŞćšćłăăăăăžăăăăžăă Unpin
ĺż
čŚăăŠăăăăăăăžăăăăăŽăăăŞĺźˇăĺŻč˝ć§ăćăŁăŚăăžăă ăăšăŚăŽéăăăŠăăŤăăăŽăćŁç˘şăŤăŻăăăăžăăă ăăăăç§ăç解ăăŚăăéăă Pin
ăŻä¸é¨ăŽăĄă˘ăŞä˝ç˝ŽăŤéŠç¨ăăăžăăă Unpin
ăŻă T
ăŽčĄ¨çžă§ăŻăăłäżč¨źăŤäžĺăăŞăăă¨ăäżč¨źăăžăă ăăăăăăăŻč¨ćśăĺŽĺ
¨ăŤĺăé¤ăăŚĺżăăăă¨ăă§ăăăŽă¨ĺăă§ăăăăďź ç§ăŻăăăŻćăăŞăă ăăŁă¨ĺ
ˇä˝çăŞäžăčăăŚăżăžăăăă
硨éďźăăĺ
ˇä˝çăŤăŻă T
ăUnpin
ă§ăăŁăŚăăăĄă˘ăŞăŽĺ˛ăĺ˝ăŚă解é¤ăăăĺăŤăĺşĺŽăăăăĄă˘ăŞă§ĺźăłĺşăăăT::drop(&mut)
ă¤ăłăšăżăłăšăŤäžĺă§ăăžăăďź ĺ˝˘ĺźä¸ťçžŠăăç§ăçĽăéăăçăăŻă¤ă¨ăšă§ăŞăăă°ăŞăăžăăăă Unpin
ă¨ăăĺĺ
硨é2ďź Rc
使ç¨ăăă¨ă Pin<&T>
ăçŁčŚă§ăăžăăă T: Unpin
ăĺ
ăŽăĄă˘ăŞä˝ç˝Žă§drop
ĺźăłĺşăăăžăăă ăăłăŽĺ¤ĺ´ă§ĺç
§ăĺçśăăăŚăă ăăăăăłăč˝ă¨ăăĺžă Rc::try_unwrap
秝ĺă§ăăžăă https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=dec6f6c6d2c0903d87a4a9cefe50a0caăăăŻć˘ĺăŽăĄăŤăăşă ăéăăŚĺšćçăŤčłŞĺăŤçăăžăăăćĺłăăă¨ăăăŤćŠč˝ăăžăăďź
ăăăăIgnorePin
ďź T
ăIgnorePin
ĺ ´ĺă Pin<Box<T>>
ă&mut T
ă¨ăăŚćąăăă¨ăă§ăăĺşćŹçăŤPin
ăŽĺĺ¨ăçĄčŚăăžăďźAIUIăBox
çĄčŚăăžăďź IgnorePin
ăŻăăă§ăŻăŞăă¨ćăăžăăăăăăä˝ă§ăăăăŻăăăăžăăă IgnorePin
ăŻăăă訹ĺŻăăăăŽă誏ćăăŚăăăĺăŤčŞ˛ăăăăĺśç´ă誏ćăăŚăăžăăăă Unpin
ă誏ćăăŚăăžăăă
@wmanleyä¸č¨ăŽăłăĄăłăă§ăé常ăŤăăäźźăă˘ă¤ăă˘ElidePin
ăĺ˝ćăŻăăŞăăăăăăćŁç˘şă§ăăă¨ćăăăŽăăĺ
ˇä˝çăŤčĄ¨çžă§ăăžăăă§ăăă ăăăăç§ăŻă1ă¤ăŽĺčŠăăRustăăźăŤăźçšć§ăŽăšăżă¤ăŤăŹă¤ăă§ăăăă¨ăŤĺćăăžăă !ElidePin
/ !IgnorePin
ăŽĺ˝˘ĺźă§ăăčŞçśăŞĺŚĺŽăĺŻč˝ă§ăăăćéŠă§ăŻăăăžăăă
@withoutboatsăăŠăăźă˘ăăăŽčłŞĺďźăăłăŻĺşç¤ă¨ăŞăăĄă˘ăŞăŽčŚłçšăăćĺŽăăăŚăăăăă§ăăăăăłăŻZSTă¨ăŠăŽăăăŤç¸äşä˝ç¨ăăžăăďź Pinned
ăŻZSTă§ăăăăăZSTă§ăăUnpin
ăăŠăăăŻä¸ćă§ăă ăăŽăĄă˘ăŞčĄ¨çžăćŁĺźăŤçĄĺšăŤăŞăăă¨ăŻćąşăăŚăŞăăŽă§ă T::drop(&mut self)
ĺźăłĺşăĺż
čŚăŻăăăžăăăăăăŻăăă¨ăă°ăŞăźăŻăăăBox
ăă&mut 'static _
ăĄă˘ăŞăăăăłăć§çŻăăćšćłă¨é常ăŤăăäźźăŚăăžăă Box
ă ĺćăŤăăăăŻăăšăŚééăŁăŚăăĺŻč˝ć§ăăăăĺĽăŽč§ŁéăăŠăŽăăăŤĺŻč˝ăŤăŞăăăăăăăžăă ăăăăŽč¨ĺŽăŻăăăăĽăĄăłăă§ćł¨çŽăŤĺ¤ăăăăăŤćăăžăă
ä˝ćăăăăăĺŽĺ
¨ă§ăăPin<P<T>>
ă¨T: !Unpin
ăăăŽĺžăăăŤĺ¤ĺşĺŽă解é¤ăăăăŻä˝ăăăăłă°ă茳ĺŻăăăŞăăă¨ăäżč¨źăăŚăăžăăďź ăăźăŞăłă°ăŽăăăŞăĄă˝ăăăĺźăłĺşăăăĺžăŤĺşĺŽăăăĺ¤ă秝ĺăăăĺ ´ĺăăăăŻćŞĺŽçžŠăŽĺä˝ăŽăżă§ăăďź
@HeroicKatoraćŽĺżľăŞăăăäťćĽă§ăŻăă¸ă§ăăŞăăŻăšăĺĺ ă§!Unpin
ăŞăĺŻč˝ć§ăŽăăĺăŤĺŻžăăŚă Drop
ăĺŽčŁ
ăăăă¨ăĺŻč˝ă§ăă
struct S<T>(T); // `!Unpin` if `T: !Unpin`
impl<T> Drop for S<T> { ... }
@cramertjăăăă¨ăăăĄăăăŠăăăĺŽçžăăžăăă
@cramertjă§ăŻăă¸ă§ăăŞăăŻĺ˘çă§ăŻăăăŠăŤăă§T: ?Unpin
ăŤăŞăăžăăďź Sized
ăăăŞć˘ĺăŽăżă¤ăă§ăăăŠăŤăă§T: Unpin
ăăŞăççąăŻäťăŤăăăžăăďź ăăăŻăăăĺäťăŤĺłć źăŤăŞăăăă¤ăăŽäžăä¸ăăă§ăăăăăăăŽčż˝ĺ ăŽčŞĺăă¤ăłăăŻĺ帰ăĺźă辡ăăĺŻč˝ć§ăăăăžăăďź
@HeroicKatoraăăăŤăŻăć¨ćşăŠă¤ăăŠăŞăŽăăšăŚăŽĺă¨ă Unpin
ăăžăŁăăć°ăŤăăŞăä¸éŁăŽăłăźăăŤ?Unpin
ĺ˘çăč¨ĺŽăăĺż
čŚăăăăžăă
Drop +ďźUnpinăżă¤ăăä˝ćăăĺĽăŽćšćłă¨ăăŚăPhantomPinnedăăŁăźăŤăăčż˝ĺ ăăăă¨ăĺŽĺ ¨ă§ăă
ăăăŠăŤăă§TăŤč¨ĺŽăăăŞăççąăŻäťăŤăăăžăăďźć˘ĺăŽăżă¤ăăŽĺşĺŽă解é¤ăăžăăďź
UnpinăŻăSend and SyncăŽăăăŞĺăŞăčŞĺçšć§ă§ăăăăăŽććĄăŤăŻć°ăăč¨čŞćŠč˝ăŻĺŤăžăăŚăăžăăă ăăăăŁăŚăčŞĺăăŹă¤ăăăă§ăŤĺŽçžŠăăăŚăăăŽă¨ĺăăťăăłăăŁăŻăšăăăăžăăă¤ăžăăăăăŠăŤăă§ăŻă¸ă§ăăŞăăŻăŤéŠç¨ăăăžăăďźčŞĺăăŹă¤ăă§ăŻăŞăăăłăłăă¤ăŠăŤçľăżčžźăžăăŚăăăăŹă¤ăă§ăăSizedă¨ăŻç°ăŞăăžăďźă
ăăźăŞăłă°ăŽăăăŞăĄă˝ăăăĺźăłĺşăăăĺžăŤĺşĺŽăăăĺ¤ă秝ĺăăăĺ ´ĺăăăăŻćŞĺŽçžŠăŽĺä˝ăŽăżă§ăăďź
ăăă§ăăăŽăłăłăăăšăă§ăŽćŞĺŽçžŠăŽĺä˝ăŻăĺŽéăŤăŻĺžćĽăŽç¨ŽéĄăŽUBă§ăŻăŞăăă¨ăć確ăŤăăĺż čŚăăăăžăă ăăăăăăŽăłăźăăŻăPinăŽĺăçŁčŚăăŚăăăŽĺ¤ăŽćć樊ăťăăłăăŁăŻăšăŤă¤ăăŚäťŽĺŽăçŤăŚăăă¨ăă§ăăžăďźă¤ăžăăUnpinăĺŽčŁ ăăŞăĺ ´ĺăăăšăăŠăŻăżăĺŽčĄăăăăžă§ăĺ庌秝ĺăžăăŻçĄĺšĺăăăăă¨ăŻăăăžăăďźă ăłăłăă¤ăŠăźăćąşăăŚčľˇăăăŞăă¨ćłĺŽăăŚăăă¨ăăćĺłă§UBă§ăŻăăăžăăďźăłăłăă¤ăŠăźăŻăăłăä˝ă§ăăăăçĽăăžăăďźă
ăăă§ăăćäžăăäżč¨źăŤäžĺăăŚăăăłăźăăăŞăăă¨ă確čŞă§ăăă¨ăăćĺłă§ăăă§ăă ăăăăĺăĺşĺŽăăăăă¨ăăłăźăă茳ĺŻă§ăăŞăăăăăăŞăăčĄăŁăăă¨ăŻç˘şăăŤçĄćĺłă§ăă
@cramertjăŞăăťăŠăăăăŻĺ°ăćŽĺżľăŞăă¨ă§ăă ç§ăŻăäťć§ă§ăŻPin
ă¨Drop
ă¨ăŽç¸äşä˝ç¨ăŤĺ°ăä¸ĺżŤă§ăăăč¨čŞă§ăŻăăă§ăŻăăăžăăă ă¤ăłăżăźăă§ă¤ăšăŽćŁç˘şć§ă使ăăăăăăăăŚčżăĺ°ćĽăŽăŞăŞăźăšăŽéă§ăăŞăççžăăŚăăžăă ä¸č¨ăŽçˇ¨é2ăŤă¤ăăŚčŞŹćăĺžăăă¨ăă§ăăžăăďź
Rcă使ç¨ăăă¨ăPin <ďźT>ăçŁčŚă§ăăžăăăTăŽĺ ´ĺďźUnpinăŻăĺ ăŽăĄă˘ăŞä˝ç˝Žă§ăăăăăĺźăłĺşăăăžăăă ăăłăŽĺ¤ĺ´ă§ĺç §ăĺçśăăăŚăă ăăăăăłăăăăăăăăĺžăRc :: try_unwrapă使ç¨ăăŚç§ťĺă§ăăžăă https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=dec6f6c6d2c0903d87a4a9cefe50a0ca
@HeroicKatoraăłăźăăŽĺéĄăŻă Mem<'a>: Unpin
ă§ăăă使ç¨ăăĺŽĺ
¨ă§ăŞăăłăźăăŽčĄăŻă Unpin
ĺŽčŁ
ăăŞăĺăŤăŽăżéŠç¨ăăă䝎ĺŽăŤäžĺăăŚăăžăă Mem<'a>: Unpin
ďź https ďź
Pin::new
ăĺźăłĺşăă¨ăăŻăUnpinăăŚăłăăŤäžĺăăžăăăăăŻăăżăźă˛ăăăUnpinăĺŽčŁ
ăăŚăăăă¤ăłăżăźă§ăŽăżĺźăłĺşăăă¨ăă§ăăžăă
ăăŞăăčŚă¤ăăă¨ćăŁăćă犴ăčć
ŽăăăăŽă§ă Rc<T: ?Unpin>
ăăPin<Rc<T>>
ăŤčĄăćšćłăăăăžăăă Rc::pinned
ăăŚăăłăŤRcăä˝ćăăĺż
čŚăăăăžăă
@withoutboatsăăă確čŞăăăăŁăăŽă§ăăă T: Unpin
ăŻăçĄĺšăŤăŞăĺăŤdrop
ĺźăłĺşăăăŞăăă˘ăŚăăăŚăăžăă ăăăŻçĺăćăăăăžăă
fn into_inner(Pin<P>) -> P where P: Deref, P::Target: Unpin;
ă¤ăłăżăźăă§ă¤ăšăŽăŠăŽé¨ĺăäżčˇăăă Pin<Box<T>>
ăBox<T>
ă˘ăłăŠăăăăăă¨ăŻć˝ĺ¨çăŤćç¨ă§ăďźăăĄăăT: Unpin
ăŽĺ ´ĺďźă
@HeroicKatoraăăŞăăŻăăŽé˘ć°ăĺŽĺ ¨ă§ăăă¨ăăăă¨ăŻćŁăăă§ăă čż˝ĺ ăăŚăăăžăăžăăăăăăŽăšăŹăăăŻăă§ăŤć°çžăŽăłăĄăłăăŽéˇăă§ăăăăăçžćçšă§ĺŽĺŽ
Unpin
ĺ˝ĺă¨ćŠč˝ăŽä¸ĄćšăăăăŽéăŽćšćłă§ăŻăăăŤçĽčŚăăăćĺłăćăŁăŚăăă¨č¨ăŁăŚăăăžăă ăăăŚă Pin
äżč¨źăĺŽéăŤT: !Unpin
ăŤĺśéăăăŚăăăă¨ăçĽăŁăŚăăžăă ăăăŻăĺŻč˝ć§ă示ăăăăŤă¨ăšăąăźăăăăăć§çŻăă䝣ăăăŤăăăŽăăăŞăĄă˝ăăăŽĺĺ¨ăŤăăŁăŚăç´ćĽç¤şăăăžăďźsmile:ă ăăăŚăăăŽăăăĽăĄăłăăŻăĺśéă誏ćăăďźăžăăŻăăä¸ĺşŚăŞăłăŻăăďźăŽăŤćéŠăŞĺ ´ćă§ăă ďź unpin
䝣ăăăŤinto_inner
unpin
ă¨ăăĺĺăäťăăăă¨ăć¤č¨ă§ăăžăďźă
硨éďźăăăŻăťă¨ăăŠăă§ăŤăăăŤăăăăŽăä¸čŹĺăăă§ăăăă
impl<P> Pin<P> where P: Deref, P::Target: Unpin
fn unpin(self) -> P
P=&'a mut T
ăŽă¤ăłăšăżăłăšĺăăăăăăăŻććĄăăăăăŽă¨ĺçă§ă
impl<'a, T: ?Sized> Pin<&'a mut T> where T: Unpin
fn get_mut(self) -> &'a mut T
ĺŽĺŽĺăĺŽäşăăăŽă§ăPFCPăŽăă¤ăłăăŻč°čŤăŽä˝ĺ°ăăăăăăŤćăăăăŽă§ă揥ăŽăăăŤăŞăăžăă
@rfcbotăăŁăłăťăŤ
https://github.com/rust-lang/rust/issues/55766#issuecomment-437374982䝼éăŤä˝ćăăăăłăĄăłăăăăăĽăĄăłăăŤĺ¤ćăăăăă¨ă確čŞăăăăăŽčż˝čˇĄăŻăăăžăăďź ăăźăżçăĺĺ˛ăăăăăăŞăŞăźăšăŤăŻăă§ăŤé ăăăăăă§ă...ĺŽĺŽĺăŽĺăŤçşçăăăăăŤăăă§ć示çăŤĺźăłĺşăăăžăăăďź/
ăăăăžă éăăŚăăççąăŻăăăžăăďź @CentrilăăŞăăŻăăăéăăŚĺéăăžăăăăăăŻćĺłçă§ăăăďź
@RalfJung FCPăăăŁăłăťăŤăăăă¨ăăžăăăăăŞăăšăłăăžăăă§ăăă @alexcrichton FCPăăăŁăłăťăŤă§ăăžăăďź
ăăăŻĺŽĺŽăăŚăăăŽă§ăéăăžăă
ćăĺčăŤăŞăăłăĄăłă
ĺ çŠăŤé˘ăăăăăłăłăŽçŤ ăć¸ăăăăŤčŞ°ăăăăăŻăŤăăžăăďź ăăăăăăŤĺžŽĺŚă§ăăăăčăăă¨ăăăăŻäżĄăăăăŞăăťăŠĺż čŚăŞăăă§ăă çšăŤăäžăçšăŤăă°ăŽăă/ćŞăĺŽčŁ ăŽäžă¨ăăăăăŠăŽăăăŤä¸ĺĽĺ ¨ă§ăăăăćăăăŤăŞăă¨ćăăžăă