attempt

fun <T : Any> attempt(block: Scanner.() -> T?): T?

Runs block, keeping what it consumed when it returns a value and rewinding when it returns null.

Return

what block returned