diff --git a/Package.swift b/Package.swift index 914a025..5e437b1 100644 --- a/Package.swift +++ b/Package.swift @@ -3,6 +3,12 @@ import PackageDescription let package = Package( name: "Wrap", + platforms: [ + .iOS(.v13), + .macOS(.v10_15), + .tvOS(.v13), + .watchOS(.v6) + ], products: [ .library(name: "Wrap", targets: ["Wrap"]), ], diff --git a/Sources/Wrap/Wrap.swift b/Sources/Wrap/Wrap.swift index 842c0f9..dfe2fc7 100644 --- a/Sources/Wrap/Wrap.swift +++ b/Sources/Wrap/Wrap.swift @@ -20,35 +20,35 @@ public struct _FlowDownBox: ~Copyable { } -public func modify(_ value: inout Value, _ modifier: (inout Value) throws -> Void) rethrows { +public func modify(_ value: inout Value, _ modifier: (inout Value) throws -> Void, isolation: isolated (any Actor)? = #isolation) rethrows { try modifier(&value) } extension _FlowDownBox { - public consuming func map(_ transform: (consuming Value) throws -> U) rethrows -> U { + public consuming func map(_ transform: (consuming Value) throws -> U, isolation: isolated (any Actor)? = #isolation) rethrows -> U { try transform(value) } @discardableResult - public consuming func `do`(_ applier: (consuming Value) throws -> Void) rethrows -> Value { + public consuming func `do`(_ applier: (consuming Value) throws -> Void, isolation: isolated (any Actor)? = #isolation) rethrows -> Value { try applier(value) return value } @discardableResult @_disfavoredOverload - public consuming func `do`(_ applier: (consuming Value) throws -> Void) rethrows -> Value? { + public consuming func `do`(_ applier: (consuming Value) throws -> Void, isolation: isolated (any Actor)? = #isolation) rethrows -> Value? { try applier(value) return value } - public consuming func modify(_ modifier: (inout Value) throws -> Void) rethrows -> Value { + public consuming func modify(_ modifier: (inout Value) throws -> Void, isolation: isolated (any Actor)? = #isolation) rethrows -> Value { try modifier(&value) return value } - public consuming func filter(_ filter: (consuming Value) -> Bool) -> Value? { + public consuming func filter(_ filter: (consuming Value) -> Bool, isolation: isolated (any Actor)? = #isolation) -> Value? { guard filter(value) else { return nil }