diff --git a/README.md b/README.md index 052b81e..c183e73 100644 --- a/README.md +++ b/README.md @@ -5578,6 +5578,49 @@ There are many other convenient methods like: - `.sum()`: adds everything together. + +`.chunks()` and `.windows()` are two ways of cutting up a vector into a size you want. You put the size you want into the brackets. Let's say you have a vector with 10 items, and you want a size of 3. It will work like this: + +`.chunks()` will give you four slices: [0, 1, 2], then [3, 4, 5], then [6, 7, 8], and finally [9]. So it will try to make a slice of three items, but if it doesn't have three then it won't panic. It will just give you what is left. + +`.windows()` will first give you a slice of [0, 1, 2]. Then it will move over one and give you [1, 2, 3]. It will do that until it finally reaches the last slice of three and stop. + +So let's use them on a simple vector of numbers. It looks like this: + +```rust +fn main() { + let num_vec = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 0]; + + for chunk in num_vec.chunks(3) { + println!("{:?}", chunk); + } + println!(); + for window in num_vec.windows(3) { + println!("{:?}", window); + } +} +``` + +This prints: + +```text +[1, 2, 3] +[4, 5, 6] +[7, 8, 9] +[0] + +[1, 2, 3] +[2, 3, 4] +[3, 4, 5] +[4, 5, 6] +[5, 6, 7] +[6, 7, 8] +[7, 8, 9] +``` + +By the way, `.chunks()` will panic if you give it nothing. You can write `.chunks(1000)` for a vector with one item, but you can't write `.chunks()` with anything with a length of 0. You can see that right in the function if you click on [src] because it says `assert!(chunk_size != 0);`. + + ## The dbg! macro and .inspect `dbg!` is a very useful macro that prints quick information. Sometimes you use it instead of `println!` because it is faster to type: