Directory recursive walking

drug drug2004 at bk.ru
Thu Jan 14 16:35:06 UTC 2021


On 1/14/21 7:30 PM, dog2002 wrote:
> On Thursday, 14 January 2021 at 16:18:28 UTC, drug wrote:
>> On 1/14/21 7:06 PM, dog2002 wrote:
>>> On Thursday, 14 January 2021 at 16:01:43 UTC, drug wrote:
>>>> [...]
>>>
>>> Yes. I forgot to add it in the original post.
>>
>> Does using `ref` changed anything?
>> Try following:
>> ```
>> import std;
>>
>> void DirIteration(ref DirEntry dir) {
>>     try {
>>         foreach(ref entry; dirEntries(dir, SpanMode.shallow, false)) { 
>> //SpanMode.shallow allows skip directories if any error happens
>>             if (entry.isFile && !entry.isSymlink)
>>                 writeln(entry); //Or something instead of this
>>             if (entry.isDir)
>>                 DirIteration(entry);
>>         }
>>     }
>>     catch (Throwable) {}
>> }
>>
>> void main()
>> {
>>     auto de = DirEntry(".");
>>     DirIteration(de);
>> }
>> ```
> 
> No, it doesn't. Seems like memory can't clear.

It is a recursion. Memory will be freed only after completion. Then I 
would try to get rid of recursion.


More information about the Digitalmars-d-learn mailing list