Closed
Description
Tracking bug for implementing DST (I'll file issues for the intermediate steps).
@nick29581 to implement, @nikomatsakis to write an RFC for the RFC repo.
Nominating 1.0 (I think its already been discussed and agree that this blocks 1.0, if someone could tag this, it would be great).
Sub-bugs:
- Add the unsized keyword #12969: Add the unsized keywordRemove the
Sized
kind #13120: Remove theSized
kindAllow the last field of a struct to be a DST #13121: Allow the last field of a struct to be a DSTRemove hack around requiringSized
bound in collect.rs #13367: Remove hack around requiringSized
bound in collect.rsPrevent storing and passing DST values #13376: Prevent storing and passing DST valuesRefactor ty_vec, avoiding vstore #13554: Refactor ty_vec, avoiding vstoreAllow coercions from statically sized to dynamically sized arrays #13716: Implement coercion rules from&[T, ..n]
to&[T]
, etc.Refactor ty_str to use a ~(str) representation. #13819: Refactor ty_str, avoiding vstore (follow up (Remove internal support for fixed length strings #13834) - remove size field from ty_str)Apply coercion rules on return expressions #12755: Coerce return values (needed for DST&[T]
literals)Remove TraitStore from ty_trait #14869: Refactor ty_trait, avoiding tstoreChange DST syntax: type -> Sized? #15521 Implement syntax for unsized types. CurrentlySized?
looks like the favouriteDST raw pointers - *-pointers are fat pointers #16805 fat raw pointersUnify unsized types in type inference #17178 unify [T] with U in type inference (needs refactoring a lot of the libs, and/or trait reform, see DST-ification of libraries #16918) - turns out we really need this. Doing anything non-trivial with DST requires it. I had hoped we could get away without for a while but that does not seem to be the case.DST: trait objects should automatically implement the trait #19187 DST: trait objects should automatically implement the trait
Tasks which don't yet have issues
- Add fat pointers to transIndexing into fat pointer types in transremove all the hackey support for old behaviour (where we treat
&[T]
differently from&([T])
)structsrecursive coercions (pointers in structs) - needs some design work (DST/custom coercions #18598, part of Implement revised coercion rules #18469)strings (but can only be instantiated using transmute)traitsuse DST coercions for receiver when doing trait/method search (leaving this till post- NIko's cleanup of everything trait related, if we want to do it at all).properly deal with type aliases which are traits (i.e., accept them everywhere a trait is accepted). I don't actually think there is anything legitimate to do here - type = Trait... works and can be used anywhere a trait type could be used. It would be wrong to use a type, even an alias to a trait type where a trait is expected
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
flaper87 commentedon Mar 16, 2014
Update: Nominated. This should probably become a metabug as soon as the sub-bugs are created.
edwardw commentedon Mar 17, 2014
cc #6308.
pnkfelix commentedon Mar 20, 2014
(we usually do not nominate metabugs for assignment to milestones, but DST is a special case so we are making an exception in this case.)
P-backcompat-lang, 1.0.
Sized
kind #1312064 remaining items