Skip to content

Commit 6c31fd7

Browse files
committed
Add convenience initializers
1 parent 674f2d4 commit 6c31fd7

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

Sources/ComposableArchitecture/SharedState/Shared.swift

+5
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ public struct Shared<Value> {
9595
self = projectedValue
9696
}
9797

98+
public init?(_ base: Shared<Value?>) {
99+
guard let shared = base[dynamicMember: \.self] else { return nil }
100+
self = shared
101+
}
102+
98103
public subscript<Member>(
99104
dynamicMember keyPath: WritableKeyPath<Value, Member>
100105
) -> Shared<Member> {

Sources/ComposableArchitecture/SharedState/SharedReader.swift

+9
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@ public struct SharedReader<Value> {
2121
self = projectedValue
2222
}
2323

24+
public init?(_ base: SharedReader<Value?>) {
25+
guard let shared = base[dynamicMember: \.self] else { return nil }
26+
self = shared
27+
}
28+
29+
public init(_ base: Shared<Value>) {
30+
self = base.reader
31+
}
32+
2433
public init(_ value: Value, fileID: StaticString = #fileID, line: UInt = #line) {
2534
self.init(
2635
reference: ValueReference<Value, InMemoryKey<Value>>(

0 commit comments

Comments
 (0)