you are viewing a single comment's thread
view the rest of the comments
[+] 1 point 2 years ago* (last edited 10 months ago) (1 child)
  • [–] 2 points 2 years ago* (1 child)

    It feels like maybe this could be a code structure issue, but within your example what about something like this?

    fn main(){
        let mut counter = 0;
        let output_array = array.into_iter()
            .map(|single_item| {
                // breaks the map if the array when trying to access an item past 5
                if single_item > 5 {
                    break;
                }
            })
            .collect()
            .map(|single_item| {
                // increment a variable outside of this scope that's mutable that can be changed by the previous run
                counter += 1;
                single_item.function(counter);
            })
            .collect();
    }
    

    Does that kinda syntax work for your workflow? Maybe it'll require you to either pollute a single map (or similar) with a bunch of checks that you can use to trigger a break though.

    Most of the time I've been able to find ways to re-write them in this syntax, but I also think that rusts borrowing system although fantastic for confidence in your code makes refactoring an absolute nightmare so often it's too much of a hassle to rewrite my code with a better syntax.

  • source
  • parent
  • hideshow 2 child comments