Войти
ФлеймФорумПрограммирование

Стоит ли изучать новый язык Rust? (25 стр)

Страницы: 121 22 23 24 25 26 Следующая »
#360
5:05, 24 мар. 2019

Sbtrn. Devil
> Есть нугет.
Тем болие.

> Но он аки гугл+ - социальная сеть, в которой никого нет.
Ну они говорят, что у них 147,258 оригинальных пакетов, не так уж чтоб и мало.


#361
23:18, 24 мар. 2019

Вовремя подняли тему.

Мне необходимо сделать REST-обертку над некоторой специфической базой данных. Сейчас обертка на питоне, но упирается в производительность (много операций сериализации/десериализации и беготня по связным спискам).

Посматриваю в сторону Rust, хотя никаких проектов на нем еще ни разу не делал, баловался только "лабораторками". Стоит ли? С одной стороны, вроде есть готовые краты для организации веб-приложения, но смущает бег по связным спискам - не напороться бы на засаду с борроу-чекером.

#362
14:51, 24 апр. 2019

Кто знает Rust, объясните, пожалуйста на пальцах, почему программа уходит в бесконечный цикл?

fn main() {
    let i = 100;
    println!("{}", i); // 100

    let i = i - 1;
    println!("{}", i); // 99
    
    let i = 100;
    loop {
        println!("{}", i); // всегда 100
        let i = i - 1;
        if i == 0 { break; }
    }
}

Последовательно читаю Rust Book. Наверняка там есть объяснение, только я до него ещё не дочитал. Не понимаю, что происходит внутри цикла.

#363
(Правка: 14:56) 14:54, 24 апр. 2019

alexzzzz
> let i = i - 1;
Понятно дело, что эта конструкция никак не затрагивает внешнюю к циклу переменную i.
Надо тупо один раз объявить let mut i = 0; и делать дальше +1, -1  или как тебе удобно.

#364
(Правка: 15:10) 15:03, 24 апр. 2019

С mut понятно; я не мог понять, чем let i = i - 1 вне цикла отличается от того же внутри цикла.

Т.е. получается, что внутри цикла в строке

let i = i - 1;
левая i и правая i - это разные i, типа из разных областей видимости? И когда цикл уходит на новую итерацию, левая i "исчезает" и каждый раз переопределяется и инициализируется заново как (старая i, пришедшая из-вне цикла, минус 1)?

#365
(Правка: 15:35) 15:34, 24 апр. 2019

Так это то же самое, что в сишке писать

int i=i-1;
внутри цикла с заголовком for(;;)

Или там нельзя названия перекрывать внутри блоков?

#366
15:42, 24 апр. 2019

в сишке я не понял что происходит.
https://ideone.com/C6zNCG
в первый раз она непонятно чем инициализируется? UB?

#367
(Правка: 16:13) 15:44, 24 апр. 2019

Это да, не только лишь каждый угадает, что тут происходит.

int i=100;
{
  printf("%d\n", i);
  int i=i+1;
  printf("%d\n", i);
}

gcc что-то слабину даёт:
https://godbolt.org/z/C-OFYX

#368
16:13, 24 апр. 2019

Лол, я думал, он берёт предыдущее объявление i

#369
16:16, 24 апр. 2019

1 frag / 2 deaths
> Так это то же самое, что в сишке писать
> Или там нельзя названия перекрывать внутри блоков?

Я привык к C#, там нельзя. Иногда это раздражало, но теперь не будет.

#370
16:38, 24 апр. 2019

alexzzzz
> левая i и правая i - это разные i, типа из разных областей видимости?
Я не знаток Rust, но кажется, что да.

entryway
> int i=i+1;
Спрашивается, какие мудаки дизайнили язык? Какого хрена инициализируемая переменная i доступна в её же инициализаторе?
В Ü такой фигни нету. Там переменная помещается в таблицу символов только после инициализации.

#371
17:03, 24 апр. 2019

Panzerschrek[CN]
> Спрашивается, какие мудаки дизайнили язык?
Томпсон и Ритчи.

#372
17:22, 24 апр. 2019

Panzerschrek[CN]
1 frag / 2 deaths
Вероятно ради

int i,*pi = &i;
Но стиль узнается, да - ради говенных частных случаев городить наркоманские правила.
#373
17:25, 24 апр. 2019
void* p = &p;
Лол
#374
(Правка: 18:32) 18:32, 24 апр. 2019

Faceroll

***********************************************************p;
Страницы: 121 22 23 24 25 26 Следующая »
ФлеймФорумПрограммирование