Swift concurrency nOOb question: if you're using Approachable Concurrency and you get warnings about using Sendable structs in non-main-actor contexts, is the recommended workaround to mark them as nonisolated?

Also, it seems odd to me that marking a struct as Sendable doesn't already exempt it from default MainActor isolation. Is there a good reason why you'd want to limit Sendable types to MainActor?

@nicklockwood Sendability and Isolation are orthogonal concepts. Your structs are still MainActor-isolated, and just because they are Sendable doesn't mean you can access them outside MainActor. In fact, they are automatically Sendable precisely because you can only access them serially on MainActor.
For global-actor-isolated types Sendable is guaranteed by accessing on a serial queue.
For nonisolated types, Sendable is guaranteed by immutability or by internal synchronisation.
@nicklockwood so answering your question more directly, yes if you want to directly access Sendable types outside MainActor you need to mark them as nonisolated. But then you'll lose Sendable-for-free for these types and need to think about a different way of conforming to it.