multiple-value-bind only accepts symbols



Is there a reason multiple-value-bind only accepts symbols, not places? And what would be the best way to do the equivalent with places? I can write this, but it's a bit ugly:

(let ((a-and-b (multiple-value-list
                (some-function-that-returns-two-values))))
  (setf (slot-a x) (first a-and-b))
  (setf (slot-b x) (second a-and-b)))


I'd much rather have something that would look like this:

(multiple-value-bind-extra ((slot-a x) (slot-b x))
    (some-function-that-returns-two-values))


Of course I can define multiple-value-bind-extra, but before doing that I wanted to know if something alike did not exist already.
.