Record destructuring is documented in the official documentation, but I don’t think that the as keyword is (except for module import), this would be a useful addition.
Also this particular use of both may not be intuitive either (I used them for pattern matching but did not think about it for nested records).
What is also nice is that it works for several sub records:
renamePersonPets name1 name2 ({pet1, pet2} as person) =
{ person
| pet1 = { pet1 | name = name1 }
, pet2 = { pet2 | name = name2 }
}
and is limited to one level deep, so this does not encourage deep nesting.