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