Since there was no response, and the symbol effect isn't working for seemingly no reason, I did it this way instead.
struct SettingsButton: View {
var action: () -> Void
@State private var rotation: Double = 0
var body: some View {
Button(action: {
rotation += 360
action()
}, label: {
Image(systemName: "gearshape")
})
.rotationEffect(.degrees(rotation))
.animation(.bouncy.speed(0.3), value: rotation)
}
}