Conforming @MainActor class to Codable

How does one add Codable conformance to a class that needs to be isolated to the MainActor?

For example, the following code gives compiler errors:

@MainActor final class MyClass: Codable {
	var value: Int
	
	enum CodingKeys: String, CodingKey {
		case value
	}
	
	init(from decoder: Decoder) throws { // <-- Compiler error: Initializer 'init(from:)' isolated to global actor 'MainActor' can not satisfy corresponding requirement from protocol 'Decodable'
		let data = try decoder.container(keyedBy: CodingKeys.self)
		self.value = try data.decode(Int.self, forKey: .value)
	}
	
	func encode(to encoder: Encoder) throws { // <-- Compiler error: Instance method 'encode(to:)' isolated to global actor 'MainActor' can not satisfy corresponding requirement from protocol 'Encodable'
		var container = encoder.container(keyedBy: CodingKeys.self)
		try container.encode(value, forKey: .value)
	}
}

I'm definitely struggling to get my head around actors and @MainActor at the moment!

I've worked out that I need to change init and encode to async functions:

@MainActor final class MyClass: Codable {
	var value: Int
	
	enum CodingKeys: String, CodingKey {
		case value
	}
	
	init(from decoder: Decoder) async throws {
		let data = try decoder.container(keyedBy: CodingKeys.self)
		self.value = try data.decode(Int.self, forKey: .value)
	}
	
	func encode(to encoder: Encoder) async throws {
		var container = encoder.container(keyedBy: CodingKeys.self)
		try container.encode(value, forKey: .value)
	}
}
Conforming @MainActor class to Codable
 
 
Q