On Sunday, 29 July 2018 at 01:05:19 UTC, Venkat wrote:
struct SomeStruct {
        string p;
        string q;
        string[] pq;
}

Session session = req.session;
session.get!SomeStruct("registerBody");

/home/venkat/.dub/packages/vibe-d-0.8.4/vibe-d/http/vibe/http/session.d(83,3): Error: 
static assert:  "Type SomeStruct contains references, which is not supported for 
session storage."


vibe.d session won't let me put in a simple struct with an array or an associative array. session.put calls std.traits.hasAliasing which is returning true when I have either an array or an associative array. I looked through the std.traits.hasAliasing code. I can't make a whole lot of sense there.

The hasAliasing function documentation says as long as the array or associative array are not immutable it should return true. Since session.put does !hasAliasing I changed string[] to immutable, that throws a whole lot of other compilation error messages.

What is hasAliasing doing ?

Posted the wrong code. Fixed it above. Reposting below for clarity. For the record both session.get and session.put call hasAliasing.

struct SomeStruct {
        string p;
        string q;
        string[] pq;
}

Session session = req.session;
session.get!SomeStruct("registerBody");

Reply via email to