Size: a a a

Rust — русскоговорящее сообществo

2020 August 14

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Эрик
И имплементация вроде
self.iter().enumerate().find(|x| x == cmp_with)
 .map(|(idx, _)| if idx == 0 { self.pop().unwrap() } else { self.vec.remove(idx) } )
У тебя в реализации инварианты кучи нарушаются
источник

Э

Эрик in Rust — русскоговорящее сообществo
Это в каком месте?
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
А, или нет
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Наверное, нет, зря быканул
источник

Э

Эрик in Rust — русскоговорящее сообществo
Да ладно, бывает.
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Andrey Vlasov
А, или нет
Вроде бы таки нарушаются
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Удали 5 и у 17 меняются дети
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Нужен ребаланс (создать новый хип без 5), чтобы это работало.
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Хотя я не смотрел как конкретно реализован хип в std, но подозреваю что так же как везде :)
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Вроде бы таки нарушаются
А, ок, помню ж вроде, что в реализациях pop не просто сдвиг влево
источник

Э

Эрик in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Хотя я не смотрел как конкретно реализован хип в std, но подозреваю что так же как везде :)
Там вектор внутри и сифты.
источник

N

Nickolay in Rust — русскоговорящее сообществo
привет всем, кто нибудь может подсказать почему это не работает?
источник

N

Nickolay in Rust — русскоговорящее сообществo
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Бывает, что компилятор недостаточно умный, в твоём случае он не понимает, что T = Test
Если написать let s: Super<Test> = Super::builder().build();, то компилится
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Эрик
Там вектор внутри и сифты.
Есть retain, который делает именно это. И он ребилдит хип после удаления элемента

        self.data.retain(f);
       self.rebuild();
источник

N

Nickolay in Rust — русскоговорящее сообществo
Andrey Vlasov
Бывает, что компилятор недостаточно умный, в твоём случае он не понимает, что T = Test
Если написать let s: Super<Test> = Super::builder().build();, то компилится
да я понимаю что явно написать это выход, но мне интересно почему не работает без этого
источник

Э

Эрик in Rust — русскоговорящее сообществo
Мда, действительно ломается.
источник

Э

Эрик in Rust — русскоговорящее сообществo
источник

Э

Эрик in Rust — русскоговорящее сообществo
Nickolay
да я понимаю что явно написать это выход, но мне интересно почему не работает без этого
let a: u64 = 1.reverse_bits(); не компилится, например.
источник