Swift 3 Set insert behaviour

I was updating some code from 2.2 to 3 today and came across some unexpected behaviour in code that was inserting values into a Set. I was using insert(_ newMember: Element) to basically update a value that was already stored in the Set. When upgrading to swift 3, calling this function didn't update the value that was stored anymore and simply did nothing. A look through the API docs revealed a new function called update(with newMember:Element) that behaves like the old insert - adds an element to the Set if not present, otherwise updates the element. Replacing the old insert with update manually fixed the problem. I couldn't find anything online mentioning this change in behaviour, so I imagine many developers out there may not be aware of it. The Swift 3 migrator should perhaps replace any insert calls with update so there are no unintended consequences in places that rely on the old behaviour.

Here is code you can copy and paste into a playground that demonstrates the problem:

struct Item: Hashable {
    var hashValue = 1
    var value: String
    init(value: String) {
        self.value = value
    }
}

func ==(lhs: Item, rhs: Item) -> Bool {
    return lhs.hashValue == rhs.hashValue
}

var set: Set<Item> = []
var item = Item(value:"first")
set.insert(item)
item.value = "second"
set.insert(item)
print(set)
// swift 2.2 prints [Item(hashValue: 1, value: "second")]
// swift 3 prints [Item(hashValue: 1, value: "first")]

set.update(with: item) //new swift 3 api (won't compile with 2.2)
print(set) 
// swift 3 prints [Item(hashValue: 1, value: "second")]