Generic types constraint for the structure in C#

class Car {
    public string Name { getset; }
}

struct Truck {
    public string Name { getset; }
}

static void Swap<T>(ref T a, ref T b) where T : struct {
    var tmp = a;
    a = b;
    b = tmp;
}

var c1 = new Car { Name = "Cami" };
var c2 = new Car { Name = "Rush" };
Swap(ref c1, ref c2);//<- Error

var t1 = new Truck { Name = "Kamaz" };
var t2 = new Truck { Name = "Ural" };
Swap(ref t1, ref t2);