Avatar
inout とか除いて単純にするとこうか。 @swift-5.7.3 @rethrows protocol P { func foo() throws } struct S1: P { func foo() { print("S1") } } struct S2: P { func foo() throws { print("S2") } } func callFoo<T: P>(of p: T) rethrows { try p.foo() } callFoo(of: S1()) do { try callFoo(of: S2()) } catch { print(error) }