Update phantom-data.md

pull/464/head
nomicon-kr 7 months ago committed by GitHub
parent d182104d6d
commit d34e7481cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -160,18 +160,18 @@ ___
여기 `PhantomData`가 사용될 수 있는 모든 경우의 놀라운 표가 있습니다:
| 흉내내는 타입 | `'a`의 변성 | `T`의 변성 | `Send`/`Sync`<br/>(or lack thereof) | dangling `'a` or `T` in drop glue<br/>(_e.g._, `#[may_dangle] Drop`) |
| 흉내내는 타입 | `'a`의 변성 | `T`의 변성 | `Send`/`Sync`<br/>(or lack thereof) | 해제 구현에서 `'a``T`의 달랑거림<br/>(_예_: `#[may_dangle] Drop`) |
|-----------------------------|:----------------:|:-----------------:|:-----------------------------------------:|:------------------------------------------------:|
| `PhantomData<T>` | - | **cov**ariant | inherited | disallowed ("owns `T`") |
| `PhantomData<&'a T>` | **cov**ariant | **cov**ariant | `Send + Sync`<br/>requires<br/>`T : Sync` | allowed |
| `PhantomData<&'a mut T>` | **cov**ariant | **inv**ariant | inherited | allowed |
| `PhantomData<*const T>` | - | **cov**ariant | `!Send + !Sync` | allowed |
| `PhantomData<*mut T>` | - | **inv**ariant | `!Send + !Sync` | allowed |
| `PhantomData<fn(T)>` | - | **contra**variant | `Send + Sync` | allowed |
| `PhantomData<fn() -> T>` | - | **cov**ariant | `Send + Sync` | allowed |
| `PhantomData<fn(T) -> T>` | - | **inv**ariant | `Send + Sync` | allowed |
| `PhantomData<Cell<&'a ()>>` | **inv**ariant | - | `Send + !Sync` | allowed |
- Note: opting out of the `Unpin` auto-trait requires the dedicated [`PhantomPinned`] type instead.
[`PhantomPinned`]: ../core/marker/struct.PhantomPinned.html
| `PhantomData<T>` | - | **공**변 | 전달 | 불가 ("`T`를 소유") |
| `PhantomData<&'a T>` | **공**변 | **공**변 | `T : Sync`<br/>이면<br/>`Send + Sync` | 가능 |
| `PhantomData<&'a mut T>` | **공**변 | **무**변 | 전달 | 가능 |
| `PhantomData<*const T>` | - | **공**변 | `!Send + !Sync` | 가능 |
| `PhantomData<*mut T>` | - | **무**변 | `!Send + !Sync` | 가능 |
| `PhantomData<fn(T)>` | - | **반**변 | `Send + Sync` | 가능 |
| `PhantomData<fn() -> T>` | - | **공**변 | `Send + Sync` | 가능 |
| `PhantomData<fn(T) -> T>` | - | **무**변 | `Send + Sync` | 가능 |
| `PhantomData<Cell<&'a ()>>` | **무**변 | - | `Send + !Sync` | 가능 |
- 주의: 자동으로 구현되는 `Unpin` 트레잇을 구현하지 않으려면 따로 선언된 [`PhantomPinned`] 타입을 사용해야 합니다.
[`PhantomPinned`]: https://doc.rust-lang.org/std/marker/struct.PhantomPinned.html

Loading…
Cancel
Save