All streams
Search
Write a publication
Pull to refresh
14
0
Георгий Громов @Erifirin

Solution Architect, Developer

Send message

Я ничего не знаю про go, но имею небольшой опыт с rust. Ваш пример некорректен. Использовать clone() на ровном месте - моветон. Есть как минимум два способа исправить пример:

  1. Вернуть из foo только что модифицированный a:

    fn foo(mut a: Vec<&str>) -> Vec<&str> {
        a.push("NIGHTMARE");
        a
    }
    
    fn main1() {
        let mut a = vec!["Hello", "world", "!"];
        a = foo(a);
        println!("{:?}", a);
    }

  2. Передать в foo ссылку на a:

    fn foo(a: &mut Vec<&str>) {
        a.push("NIGHTMARE");
    }
    
    fn main1() {
        let mut a = vec!["Hello", "world", "!"];
        foo(&mut a);
        println!("{:?}", a);
    }

Что поделать. Если бы начальная легенда оправдалась, то конечно статья получилась бы намного интереснее. Когда делаешь подобную работу всегда хочется найти какую-то экзотику, но, к сожалению, её тут нет (хотя может наоборот — к счастью). Так или иначе, подтверждение ожиданий — тоже результат.
Не претендую на истину в последней инстанции, но в упомянутой Вами википедии написано, что алгоритм RDRAND использует аппаратный источник энтропии для получения 256-битного значения, которое используется для инициализации ГПСЧ. Такую комбинацию из внешнего источника энтропии и криптостойкого ГПСЧ допустимо (или даже принято) понимать под ГСЧ.
Решил, что тесты лучше не затрагивать поверхностно, а с подробностями вышел бы за рамки статьи уже. Но подумаю над отдельным материалом про это.
Обновил статью и добавил визуализацию последовательностей на плоскости и в 3D. Результаты по Android, но на других платформах картина точно такая же — везде хаос.
Там мало интересного, но раз просите… добавим.
Досадная опечатка. Спасибо за внимательность.

Information

Rating
Does not participate
Registered
Activity