[Issue 23373] New: add uda (e.g. @csvIgnore) support in std.csv to ignore some field
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Sep 25 17:12:17 UTC 2022
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 at puremagic.com
Reporter: mingwu at 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.
--
More information about the Digitalmars-d-bugs
mailing list