BurntSushi / walkdir

Rust library for walking directories recursively.
The Unlicense
1.21k stars 106 forks source link

[feature] Create a `try_filter_entry()` #131

Open zicklag opened 4 years ago

zicklag commented 4 years ago

I am using this library and have run into the need to capture a potential error inside of the filter_entry predicate. I asked in a forum topic about my problem and the response was that the best way to accomplish it would be with a try_filter_entry iterator so that I could return a result inside of the filter predicate.

I did a quick check of the source code to see how I might be able to implement that, but I was wondering if you might have any guidance on how you would want that implemented.

I haven't ever written an iterator before, but it looks like, if I wanted to create a FilterEntry iterator that it would be nearly identical to the existing TryFilterEntry iterator, but not quite the same.

Is there any way to share most of the implementation without duplicating code, or is it better just to create a copy of FilterEntry and the make the changes necessary.

BurntSushi commented 4 years ago

I think the ideal way to do this would be to create TryFilterEntry as a copy, and then re-implement FilterEntry in terms of TryFilterEntry if possible.

zicklag commented 4 years ago

OK, that makes sense. I'll try to get a PR for that when I find the time. Could you assign this to me so I don't forget?

BurntSushi commented 4 years ago

Done! Thanks!

ThinkChaos commented 4 years ago

@zicklag are you working on this or can I take it?

I implemented a workaround in a personal project but would like to contribute back to this crate instead 😃

zicklag commented 4 years ago

@ThinkChaos Go ahead and take it. :smiley:

I never got back to this, so it would be appreciated! :+1: