用于方便使用 swift-dependencies 的宏
import Dependencies
import DependenciesMacro
@PublicInit
@Dependencies
public struct TestClient {
public var request: @Sendable (_ request: Request) -> Void
}
@DependencyValue(TestClient.self)
public extension DependencyValues {}
@PublicInit
是一个成员宏,提供一个公共初始化器。该宏只能应用于公共结构体。
@Dependencies
是一个扩展宏,可以将 TestClient 遵循 TestDependencyKey 协议。该宏也只能应用于结构体。
@DependencyValue
是一个成员宏;通过使用该宏扩展 DependencyValues,你可以添加一个参数中指定类型的属性。
在此示例中,宏扩展如下所示。
public struct TestClient {
public var request: @Sendable (_ request: Request) -> Void
public init(
request: @Sendable @escaping (_ request: Request) -> Void
) {
self.request = request
}
}
extension TestClient: TestDependencyKey {
public static let testValue = TestClient(
request: unimplemented("\(Self.self).request")
)
}
public extension DependencyValues {
var testClient: TestClient {
get {
self[TestClient.self]
}
set {
self[TestClient.self] = newValue
}
}
}
该库只能通过 Swift 包管理器安装。
.package(url: "https://github.com/Ryu0118/swift-dependencies-macro", from: "0.2.2")