Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> And here's a toilet closure: |_| ()

> Called thusly because |_| () looks like a toilet.

Pure poetry!

Real talk though, this is a great introduction.



I've been staring at this for a minute, but please help me seeing a toilet in this? Is it a top down view perhaps?


toilet seat up


which bit is the toilet seat?


The seat is to the right (the ( )) and the water tank (?) is on the left.



Much appreciated!


I often use the "owl" <(),()>, usually in Result<(),()>.


Why use a Result whose error type is empty?


I should have said :) I am writing backtracking algorithms (think something like a Sudoku solver where we fill in values by guessing), and an 'Error' is when we can deduce the Sudoku cannot be filled in, so we have to backtrack.

I find Rust's ? notation gives a very natural way of writing such algorithms. I don't care "why" filling in the Sudoku failed, particularly because the solver will typically fail millions of times a second, so I definately don't want constructing the error to be expensive in any way.


I would suggest Option is the more semantic type to use for your situation - None indicating no valid solution on this path


Oh, today I learned the ? operator works with Option as well as Result! I might try that out, thanks.


IIRC, it didn't work with Option in the past, so you might have been correct when your code was written. The ? operator came originally from the try!() macro, which was specific to Result; unlike the macro, it was designed to be extensible through the still-unstable std::ops::Try trait, but IIRC that trait was initially implemented only for Result, and only later was extended to Option and a couple of others.


It's sometimes called a type-level boolean. Instead of trying to remember what true or false means, you have explicit variants associated with success or failure. (The underlying representation, including bit width, is the same)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: