digitalmars.D.bugs - [Issue 23373] New: add uda (e.g. csvIgnore) support in std.csv to
- d-bugmail puremagic.com (50/50) Sep 25 2022 https://issues.dlang.org/show_bug.cgi?id=23373
https://issues.dlang.org/show_bug.cgi?id=23373 Issue ID: 23373 Summary: add uda (e.g. csvIgnore) support in std.csv to ignore some field Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: phobos Assignee: nobody puremagic.com Reporter: mingwu gmail.com https://forum.dlang.org/post/rfitvsooqjuvvbftqugv forum.dlang.org Currently std.csv can only handle basic scalar types, that is fine, but we need ways to allow user mark some (non-scalar) fields should be ignored: I'm trying this example: https://dlang.org/phobos/std_csv.html ``` struct Layout { string name; int value; double other; csvIgnore Layout* parent; // add extra pointer } auto records = text.csvReader!Layout(';'); ``` Right now, if we add this extra pointer, the compiler will error out: https://run.dlang.io/is/EvU6Ee /dlang/dmd/linux/bin64/../../src/phobos/std/conv.d(223): Error: template std.conv.toImpl cannot deduce function from argument types !(Layout*)(string), candidates are: ... I think if we can add add uda (e.g. csvIgnore) support in std.csv, it will make the library more flexible to use. I do run into this problem today, i.e. my struct need some extra non-simple-scalar fields (e.g. SysTime) other than those defined in the csv file, I'm wondering what kind of work-around people use in such situation? Run into this problem yet again: ``` class Foo { Foo[] foos; // how to mark this field to be csv ignored? } ``` Any work around? Thanks. --
Sep 25 2022