Anton
ну вот в этом я не разбираюсь прости)
Anton
Anton
Anton
никогда
Anton
просто тулкит онли вьюшечки, рисовалочки и эвентики
Αλεχ
Как сделать случайную запись в вектор?
Αλεχ
fn main() {
let mut vec: Vec<i32> = Vec::new();
vec.reserve(10);
vec[5] = 5;
}
Паникует
Денис
reserve не меняет размер, он меняет только capacity
Денис
самое простое — let mut vec = vec![0i32; 10]; vec[5] = 5
Αλεχ
только у меня нет 5)
Αλεχ
у меня:
fn foo(n: usize) {
let mut vec: Vec<i32> = Vec::new();
vec.reserve(n);
vec[n/2] = 5;
}
Alexander
Тут вектор 0 длинны.
Денис
да хоть пять, хоть десять, хоть n
Денис
какая разница-то
Αλεχ
массив неизвестного размера раст не позволяет создаватть
Денис
что такое "массив неизвестного размера"? О_о
Αλεχ
Это значит, что размер динамически определяется, например из stdin
Денис
ну так пуш в него сколько душе угодно
Αλεχ
мне нужна структура данных, где я могу делать рандомную запись в любое место в пределах capacity
Alexander
itertools::repeat(0)::take(n).collect()
Денис
ну выделяй вектор размера капасити же
Денис
Alexander
Ну да
Денис
Αλεχ
а все, понятно
Αλεχ
fn main() {
let mut vec: Vec<i32> = Vec::new();
vec.resize(10, 0);
vec[5] = 5;
}
Αλεχ
чет тупанул
Денис
блин
Денис
vec!(0i32; n) сделает то же самое
Bugworm
работает - не трожь
Loo
лол... =\
Αλεχ
pub fn grow(&mut self, n: usize) {
self.value.resize(value.len() + n, 0);
}
Alexander
Если с массивами сразу не получается, то можно сначала в вижуал-бейсике потренироваться. :)
Денис
Anton
то есть люди сами по себе не высокомерные мудаки? =)
Αλεχ
Если с массивами сразу не получается, то можно сначала в вижуал-бейсике потренироваться. :)
усе нормуль, что-то получилось
trait Index2D {
fn get_indices(&self) -> &[usize; 2];
}
impl Index2D for [usize; 2] {
fn get_indices(&self) -> &[usize; 2] {
self
}
}
struct AdjacencyMatrix<T> {
value: Vec<T>
}
impl<T: Default + Clone> AdjacencyMatrix<T> {
pub fn new() -> Self {
Self {
value: Vec::new()
}
}
pub fn new_sized(n: usize) -> Self {
Self {
value: vec!(T::default(); n*n)
}
}
pub fn grow(&mut self, n: usize) {
let newlen = self.value.len() + 2*n - 1;
self.value.resize(newlen, T::default());
}
}
impl<T, Idx: Index2D> Index<Idx> for AdjacencyMatrix<T> {
type Output = T;
fn index(&self, index: Idx) -> &<Self as Index<Idx>>::Output {
let indices = index.get_indices();
let linear_index = index_linear(indices[0], indices[1]);
self.value.index(linear_index)
}
}
impl<T, Idx: Index2D> IndexMut<Idx> for AdjacencyMatrix<T> {
fn index_mut(&mut self, index: Idx) -> &mut <Self as Index<Idx>>::Output {
let indices = index.get_indices();
let linear_index = index_linear(indices[0], indices[1]);
self.value.index_mut(linear_index)
}
}
fn index_linear(i: usize, j: usize) -> usize {
let (i, j) = if i > j { (j,i) } else { (i,j) };
if j % 2 == 0 {
(j*j + j) + i - j
} else {
(j*j + j) + j - i
}
}
Денис
есть такая эвристика, что трейт баунды лучше юзать ближе к телу, а, скажем, Clone ты вообще никак не используешь в Impl AdjacencyMatrix, можешь его смело выкидывать
Денис
а, он в resize нужен
Денис
ну вот разумно было бы его именно для grow и указать
Денис
так же как и Default
Денис
и кстати, имеет смысл new заменить на дефолт, потому что по факту это и есть дефолтный конструктор
Денис
(и я надеюсь у тебя есть тесты, из которых можно понять, как работает index_linear)
Anton
вопрос идеологический - для приложений которые планируется запускать через k8s/docker - параметры лучше задавать через переменные окружения?
Αλεχ
ne_on
кстати а инкрементальную компиляцию завезли??
Rostyslav
Да.
Сергей
Маjко
պլհկ
Mehul
This Week in Rust 226 buff.ly/2DHWBhd #rustlang
でゲソ
Шо такое chalkification
Сергей
https://github.com/rust-lang-nursery/chalk
でゲソ
То бишь добавление термов чалка?
Vlad
Там в ридми ссылки на статьи
http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/
Anton
Anton
Loo
Loo
?
Anton
Личная неприязнь)
Anton
Сервис работает с бд
Anton
Зачем тут еще тащить http ?
Loo
эм. чтобы с консулом работать?
Loo
тянуть изменяемые параметры
Loo
вообще уже есть готовые обёртки
Loo
ну должны быть
Loo
но вообще эта неприязнь выглядит странно)
Denis
docker swarm как бы намекает, что нужно маунтить "секреты" в контейнер (секреты - это такой in-memory volume с одним файлом, а в файле - конфиг).
Anton
vault же
Anton
для секретов
Denis
я не очень понял, как vault работает в распределенной системе
Anton
Secure Secret Storage: Arbitrary key/value secrets can be stored in Vault. Vault encrypts these secrets prior to writing them to persistent storage, so gaining access to the raw storage isn't enough to access your secrets. Vault can write to disk, Consul, and more.
Anton
Нужно распледеленка - можно запихнуть в консул
Denis
В случае с docker swarm - секреты из коробки загружаются в распределенное зашифрованное хранилище. Наверное для k8s есть смысл в нем, да
Anton
ну нинай сварм хватал только поначалу
Αλεχ
Кто знает, как в битбакете сделать шару приватного репозитория по ссылке?
Kerrigan
Kerrigan
можешь добавить человека в команду
Αλεχ
а если у него нет аккаунта?