Size: a a a

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

2020 August 31

/

/bin/cat in Rust — русскоговорящее сообществo
Там всё-таки в compile time
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Тебе этот метод не поможет, LocalKey тебе &mut не дает
источник

/

/bin/cat in Rust — русскоговорящее сообществo
А, понял
источник

/

/bin/cat in Rust — русскоговорящее сообществo
А вот RefCell явно реализует borrow mut и можно писать &mut f теоретически
источник

Э

Эрик in Rust — русскоговорящее сообществo
/bin/cat
А вот RefCell явно реализует borrow mut и можно писать &mut f теоретически
источник

Э

Эрик in Rust — русскоговорящее сообществo
Но вообще, RefCell тут лучше.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Эрик
Но вообще, RefCell тут лучше.
RefCell лучше только если ссылки надо долго держать.
источник

/

/bin/cat in Rust — русскоговорящее сообществo
Это практически static mut array
источник

Э

Эрик in Rust — русскоговорящее сообществo
/bin/cat
Это практически static mut array
А что мешает сделать
thread_local! { mut static VEC: /* */ ; }
?
источник

V

Vladimir in Rust — русскоговорящее сообществo
Mikail Bagishov
По идее, ты можешь сделать небольшую обертку над UnsafeCell, которая предоставляет методы
with(f: impl FnOnce(&T) -> R) -> R
with_mut(f: impl FnOnce(&mut T) -> R) -> R
И она будет безопасная

x.with_mut(|ref1|
x.with_mut(|ref2| {

}));

Насколько это сейфово?
источник

V

Vladimir in Rust — русскоговорящее сообществo
Эрик
А что мешает сделать
thread_local! { mut static VEC: /* */ ; }
?
А так можно?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Vladimir
А так можно?
Видимо, нельзя.
источник

V

Vladimir in Rust — русскоговорящее сообществo
Эрик
Видимо, нельзя.
Именно по причине того, что уже есть рефцелл) а треадлокал просто позволяет сделать глобальную переменную (решает проблему шаринга, но не изменения)
источник

V

Vladimir in Rust — русскоговорящее сообществo
Эрик
Потому что его сделали Send + Sync.
Это кстати не сильно одно из другого выходит
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Vladimir

x.with_mut(|ref1|
x.with_mut(|ref2| {

}));

Насколько это сейфово?
О, окей, спасибо. Похоже на серьезный изъян.
источник

V

Vladimir in Rust — русскоговорящее сообществo
Mikail Bagishov
О, окей, спасибо. Похоже на серьезный изъян.
Это кстати и аргумент к тому почему тлс не имеет такого интерфейса)
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
А есть такая cargo утилита, которая сканирует файл Cargo.toml и предлагает минимизировать количество используемых косвенных библиотек ? Например в Cargo.toml у меня есть библиотеки
a = “1.0.0”, которая зависима от библиотеки c = “1.2.0”
b = “1.0.0”, зависима от c = 1.2.1”

итоге может предложить апгрейдить а, или даунгрейдить b, или оба , чтоб в итоге они зависели от одной и той же библиотеки c = “x.y.z”

почему возник вопрос: в проект использует порядка 50 библиотек, которые суммарно в свою очередь используют около 400 библиотек, где есть 4 версии tokio
0.2.19
0.2.20
0.2.21
0.2.22

ну и других библиотек от 2 до 4 версий.

Спасибо.
источник

AT

Alex Ted in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
А есть такая cargo утилита, которая сканирует файл Cargo.toml и предлагает минимизировать количество используемых косвенных библиотек ? Например в Cargo.toml у меня есть библиотеки
a = “1.0.0”, которая зависима от библиотеки c = “1.2.0”
b = “1.0.0”, зависима от c = 1.2.1”

итоге может предложить апгрейдить а, или даунгрейдить b, или оба , чтоб в итоге они зависели от одной и той же библиотеки c = “x.y.z”

почему возник вопрос: в проект использует порядка 50 библиотек, которые суммарно в свою очередь используют около 400 библиотек, где есть 4 версии tokio
0.2.19
0.2.20
0.2.21
0.2.22

ну и других библиотек от 2 до 4 версий.

Спасибо.
интересный кейс
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Alex Ted
интересный кейс
но не такой уж и редкий думаю
источник

t

this is not mrklf in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
А есть такая cargo утилита, которая сканирует файл Cargo.toml и предлагает минимизировать количество используемых косвенных библиотек ? Например в Cargo.toml у меня есть библиотеки
a = “1.0.0”, которая зависима от библиотеки c = “1.2.0”
b = “1.0.0”, зависима от c = 1.2.1”

итоге может предложить апгрейдить а, или даунгрейдить b, или оба , чтоб в итоге они зависели от одной и той же библиотеки c = “x.y.z”

почему возник вопрос: в проект использует порядка 50 библиотек, которые суммарно в свою очередь используют около 400 библиотек, где есть 4 версии tokio
0.2.19
0.2.20
0.2.21
0.2.22

ну и других библиотек от 2 до 4 версий.

Спасибо.
есть
источник