副作用出したくないなら、updateの中を

・新しいDataインスタンスを作る
・OptionalかResult〈T〉みたいな成功・失敗とTを持つような型で返す

とすればいいかもね