Safer Swift: How ~Copyable Prevents Hidden Bugs
❓ Протокол
⚠️ Копирование структуры, содержащей указатель на файл, может привести к ошибкам, когда оба экземпляра записывают в один и тот же файл.
✔️ Добавление
🖥 Краткая справка по модификаторам:
~Copyable в Swift 5.9 предотвращает неявное копирование объектов, требуя явного управления владением данными.~Copyable к структуре предотвращает компиляцию кода, если происходит попытка использовать объект после его передачи.borrow (временный доступ для чтения), consume (полное владение) и inout (временный доступ для изменения).struct FileHandleWrapper: ~Copyable {
let handle: UnsafeMutablePointer<FILE>
init(path: String, mode: String) {
guard let file = fopen(path, mode) else {
fatalError("Failed to open file")
}
self.handle = file
}
func write(_ text: String) {
fputs(text, handle)
}
deinit {
print("Closing file handle")
fclose(handle)
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2