> On Dec 30, 2015, at 9:53 AM, Joe Groff via swift-evolution 
> <[email protected]> wrote:
> 
> 
>> On Dec 29, 2015, at 8:55 PM, Kevin Ballard via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> An alternative solution is to do what Rust and C++ do, which is to use RAII. 
>> Which is to say, instead of introducing a new language construct that's 
>> explicitly tied to a scope, you just use a struct to represent the resource 
>> that you hold (e.g. a File that represents an open file). Of course, this 
>> does require some changes to structs, notably the addition of a deinit. And 
>> if structs have a deinit, then they also need to have a way to restrict 
>> copies. This is precisely what Rust does; any struct in Rust that implements 
>> Drop (the equivalent to deinit) loses the ability to be implicitly copied (a 
>> second trait called Clone provides a .clone() method that is the normal way 
>> to copy such non-implicitly-copyable structs).
> 
> deinit doesn't make sense for value types. 

It would if we extended the model for value types to be richer, e.g. to 
introduce the notion of "move only” structs.

-Chris

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to