.for_each(|((_, _, t), (_, _, b))| { ... }
This is actually fairly similar to what C# has.
This is a closure syntax:
| arguments | { calls }
In C#, the closest is lambda expressions, declared like this:
( arguments ) => { calls }
Parentheses are tuple deconstructors. In C# you have exactly the same thing. Imagine you have a method that returns a two element tuple. If you do this:
var (one, two) = MethodThatReturnsATuple();
You’ll get your tuple broken down automatically and variables one
and two
declared for you.
First of all, I’m using .zip()
to pair the rows of the picture by two, that returns a tuple, so, I have to deconstruct that. That’s what the outer parentheses are for. The pixel enumeration stuff I’m using returns a tuple (u32, u32, &Rgba<u8>)
first two values are x and y of the pixel, the third one is a reference to a structure with color data. I deconstruct those and just discard the position of the pixel, you do that with an underscore, same as C#.
I’m not that far into learning myself, but I’m not a textbook learner at all. Poking around opensource projects and wrestling with the compiler prooved to educate me a lot more.
BitTorrent breaks your data in blocks, each block is hashed, their sizes are known. Assuming you got your
.torrent
file from a legitimate source, it’s practically impossible to receive something else, as long as your client does all the checks properly.In theory, it is possible to write malware that will collide hashes with some other content, but considering you are restricted to the size of the actual content, it’s extremely unlikely that out of all the millions of
.torrent
s we created so far we can find even one for which it is possible.And even if you win this absolutely bizzare lottery, you’ll be competing with legitimate peers for serving the blocks. If at least one block that you care about is not served by you, the recepient will just get corrupted content that won’t be dangerous in any way. In other words, you need to have so much bandwidth, that you serve everything before anyone else can serve even one significant block. At which point you will probably have to spend a lot more money on that than you’ll ever get from whatever malware you are trying to serve.