Since then, SE-0345 (if let self instead of if let self = self) and SE-0365 (support for implicit self after self has been unwrapped) both improved the boilerplate situation enough that I don't really think any other sugar is necessary. guard let self else { return } is pretty reasonably lightweight