@_asvector()
def __sub__(self, other):
    return Vector(*[(i - j) for (i, j) in zip(self, other)], smart=self.smart)
@_asvector()
def __sub__(self, other):
    return Vector(*[(i - j) for (i, j) in zip(self, other)], smart=self.smart)