тебя в программе образуются две одновременно живущие мутабельные ссылки на одно и то же, м?
Ну а то, что Vec::pop сделает тебе те же две &mut T?
во-первых, что это за аргумент такой? во-вторых, нет, не делает
Ладно, там действительно не делает. Но append точно сначала читает, а потом сетапит длину. Так что если у тебя Vec<&mut T>, то во время аппенда у тебя таки существуют несколько уникальных ссылок в одно место (точнее несколько пар уникальных ссылок в одно место).
даже во время аппенда не существует, нет способа получить физически такую ссылку
физически-то в случае с вектором есть только сырой указатель на начало массива, а если ты где-то держишь ссылку на айтем из вектора, то есть материализуешь &mut T, то append сделать не получится а в нашем случае фактически получается let a = &mut x; let b = &mut x
Обсуждают сегодня