first itself, not
rest of the list node that first points to.
The implementation is as follows:
void List_setrest(struct _List *pList, struct _List *pRest)
{
if (!((struct _List *)pList)->first)
{
*((struct _List *)pList) = *(((struct _List *)pRest);
}
else
{
((struct _List *)pList)->first->rest = *pRest;
}
}