Clarify the English translation of ?Sized
* It wasn't clear whether `?Sized` meant "not `Sized`" or "`Sized` or not `Sized`". According to #rust IRC, it does indeed mean "`Sized` or not `Sized`". * Use the same language as [Trait std::marker::Sized](https://doc.rust-lang.org/std/marker/trait.Sized.html) about how `Sized` is implicitly bound.
This commit is contained in:
parent
764ef92ae7
commit
2fd4e604a4
1 changed files with 3 additions and 4 deletions
|
|
@ -47,7 +47,7 @@ pointers, can use this `impl`.
|
|||
# ?Sized
|
||||
|
||||
If you want to write a function that accepts a dynamically sized type, you
|
||||
can use the special bound, `?Sized`:
|
||||
can use the special syntax, `?Sized`:
|
||||
|
||||
```rust
|
||||
struct Foo<T: ?Sized> {
|
||||
|
|
@ -55,6 +55,5 @@ struct Foo<T: ?Sized> {
|
|||
}
|
||||
```
|
||||
|
||||
This `?`, read as “T may be `Sized`”, means that this bound is special: it
|
||||
lets us match more kinds, not less. It’s almost like every `T` implicitly has
|
||||
`T: Sized`, and the `?` undoes this default.
|
||||
This `?Sized`, read as “T may or may not be `Sized`”, allowing us to match both constant size and unsized types.
|
||||
All generic type parameters implicitly have the `Sized` bound, so `?Sized` can be used to opt-out of the implicit bound.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue