Section 7/91 menit
7. Kapan Tidak Digunakan
7. Kapan Tidak Digunakan
Hindari ~Copyable ketika:
1. Data murni yang tidak punya lifecycle
swift
// JANGAN: tidak ada manfaat noncopyable di sini
// struct Point: ~Copyable { var x, y: Double }
// GUNAKAN: Copyable biasa — CGPoint, CLLocationCoordinate2D, dll
struct Point { var x, y: Double }
2. Data yang memang perlu dibagi ke banyak tempat
swift
// JANGAN: User perlu dibaca dari banyak tempat
// struct User: ~Copyable { var name: String }
// GUNAKAN: struct biasa atau actor
struct User { var name: String } // di-copy saat diteruskan — aman
3. Protocol conformances yang butuh Copyable
swift
// Banyak protokol Swift (Hashable, Equatable, Codable) membutuhkan Copyable
// Jika tipe kamu perlu conform ke protokol ini, tidak bisa ~Copyable
// Bukan noncopyable karena perlu Hashable (untuk dipakai sebagai Dictionary key)
struct UserID: Hashable {
let value: UUID
}
4. Saat kompleksitas melebihi manfaatnya
swift
// Jika tidak ada resource leak, double-free, atau use-after-free risk,
// noncopyable hanya menambah kerumitan tanpa benefit nyata