Форум rust-lang.ru - Последние сообщения https://forum.rustycrate.ru Последние сообщения Rust Core Engineer: Разработка мобильной ОС (Pre-seed) Всем привет. Я основатель стартапа. Cоздаём мобильную ОС нового типа.

Ищу Rust инженера, который станет архитектором ядра нашей системы.

Задача:

Спроектировать и написать с нуля Core Engine на Rust. Это не про подключение готовых крейтов, а про создание сложной логики с нуля:

  • Data Structures: Собственный движок для работы со сложными структурами данных (граф/аутлайнер).
  • Performance: Интеграция с Android (JNI/FFI) - и в будущем в AOSP. Unsafe здесь не страх, а рабочий инструмент для границы с C/C++.
  • Search & Sync: Мгновенный поиск и синхронизация данных (CRDT/OT).

Кого ищу:

  • Инженера уровня Senior/Staff. Человека, который хочет иметь реальное влияние на продукт и архитектуру с первой строки кода.

Условия:

  • Стадия: Pre-seed.
  • Зарплата: Обсуждаемая, ориентируемся на рынок.
  • Формат работы: Обсуждаемо.

Если тебе интересно строить фундамент революционного продукта — пиши в ТГ @inzagi101

]]>
https://forum.rustycrate.ru/t/rust-core-engineer-razrabotka-mobilnoj-os-pre-seed/1539#post_1 Sat, 07 Mar 2026 18:46:29 +0000 forum.rustycrate.ru-post-4121
3К$/мес ищем кодера rust мидл-сеньера За такие деньги вряд ли вы найдёте ответственного(капсом), тем более для геморроя с винапи. Хотя может только «кодера» и сыщете, но точно не инженера, программиста, разработчика.

]]>
https://forum.rustycrate.ru/t/3k-mes-ishhem-kodera-rust-midl-senera/1527#post_2 Tue, 30 Dec 2025 22:56:25 +0000 forum.rustycrate.ru-post-4119
3К$/мес ищем кодера rust мидл-сеньера Привет, коллеги!

Мы делаем многомодульного бота и нам требуется человек отвечающий за системную разработку под платформу Windows

Работа в команде, долгосрочная (считайте нашли работу\команду мечты)
Более-менее свободный график
Минимум мозгоклюйства
Адекватные дедлайны
Фикс. ЗП + бонусы.

Кого ищем:
1+ год разработки на Rust
Глубокое понимание unsafe-кода и работы c raw-pointers, моделей памяти (ownership, lifetimes) асинхронного программирования, многопоточности и синхронизации.
Low-level разработка (Опыт работы с WinApi/NTAPI)
Реализация прямых системных вызовов
Техники инъекции кода
Работа с PEB\TEB структурами
Базовое понимание криптографических протоколов

ПИСАТЬ В ТГ @shutniknikita

ТОЛЬКО ОТВЕТСТВЕННЫЕ ЛЮДИ!

]]>
https://forum.rustycrate.ru/t/3k-mes-ishhem-kodera-rust-midl-senera/1527#post_1 Mon, 30 Jun 2025 21:11:53 +0000 forum.rustycrate.ru-post-4108
Нужна помощь в обучении программированию на Rust Добрый день!
Тоже нужна помощь в обучении. сейчас прохожу курсы https://kursfinder.ru/ но уже устроился на работу и нукжно быстро решать задачи
Опыт в программировании практически нулевой :slight_smile:
Без поддержки и четкого плана обучение затянется на годы, а мне важно быстро получить результат и понять основы.

]]>
https://forum.rustycrate.ru/t/nuzhna-pomoshh-v-obuchenii-programmirovaniyu-na-rust/1069#post_8 Mon, 02 Jun 2025 08:42:02 +0000 forum.rustycrate.ru-post-4102
Устранение ошибок cargo

Здравствуйте, недавно работаю с языком Rust, и при установке необходимых мне пакетов, вылезает такая ошибка отображённая в скриншоте. подскажите пожалуйста способы устранить эту ошибку.

]]>
https://forum.rustycrate.ru/t/ustranenie-oshibok-cargo/1516#post_1 Thu, 03 Apr 2025 18:46:39 +0000 forum.rustycrate.ru-post-4096
Lifetime issues in async transaction wrapper with closures in Rust I’m working on a Rust project using the repository pattern and want to implement a transaction execution wrapper to handle commit/rollback functionality. However, I’m facing difficulties managing lifetimes with futures in closures.

Environment:

  • Rust: rustc 1.82.0 (f6e511eec 2024-10-15)
  • Cargo: cargo 1.82.0 (8f40fc59f 2024-08-21)

Issue:

I get the following lifetime error:

error: lifetime may not live long enough
   --> src/questions.rs:111:22
    |
111 |                 |tx| async move { self.persistence_repository.next_user_id(tx).await },
    |                  --- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'2`
    |                  | |
    |                  | return type of closure `{async block@src/questions.rs:111:22: 111:32}` contains a lifetime `'2`
    |                  has type `&'1 mut questions::Transaction<'_>`

Context:

The problem occurs when I pass a closure to the with_transaction function. Here is the simplified reproduction code:

[Reproduction code as provided in the question]

What I’ve Tried:

  • Adjusting the lifetime annotations for Transaction<'a> and the closure.
  • Experimenting with for<'a> in the with_transaction trait method signature.
  • Restructuring the async block in the closure.

Desired Behavior:

I want the transaction wrapper function with_transaction to:

  1. Execute the provided closure (transactional logic) with a mutable transaction reference.
  2. Commit or rollback the transaction based on the closure’s result.

Question:

How can I correctly manage lifetimes in this case to avoid the lifetime may not live long enough error? Is there a better way to design this transaction wrapper to handle async closures cleanly in Rust?

Reproduction code:

use anyhow::Context;
use sqlx::{PgPool, Postgres, Transaction as SqlxTransaction};
use std::future::Future;

pub trait PersistenceRepository {
    async fn next_user_id<'a>(
        &self,
        transaction: &mut Transaction<'a>,
    ) -> Result<String, anyhow::Error>;
}

pub struct AuthService<P, T> {
    persistence_repository: P,
    transaction_factory: T,
}

impl<P: Send + Sync, T: Send + Sync> AuthService<P, T> {
    pub fn new(persistence_repository: P, transaction_factory: T) -> Self {
        Self {
            persistence_repository,
            transaction_factory,
        }
    }
}

impl<P: PersistenceRepository, T: TransactionFactory> AuthService<P, T> {
    pub async fn create_user(&self) -> Result<String, anyhow::Error> {
        self.transaction_factory
            .with_transaction(
                |tx| async move { self.persistence_repository.next_user_id(tx).await },
            )
            .await
    }
}

pub trait TransactionFactory {
    async fn begin_transaction(&self) -> Result<Transaction<'_>, anyhow::Error>;
    async fn commit_transaction(&self, transaction: Transaction<'_>) -> Result<(), anyhow::Error>;
    async fn rollback_transaction(&self, transaction: Transaction<'_>)
        -> Result<(), anyhow::Error>;

    async fn with_transaction<'b, F, Fut, R, E>(&'b self, f: F) -> Result<R, E>
    where
        F: for<'a> FnOnce(&'a mut Transaction<'b>) -> Fut,
        Fut: Future<Output = Result<R, E>>,
        E: From<anyhow::Error>;
}

pub struct Transaction<'a> {
    pub inner: SqlxTransaction<'a, Postgres>,
}

#[derive(Clone)]
pub struct SqlxTransactionFactory {
    pool: PgPool,
}

impl SqlxTransactionFactory {
    pub fn new(pool: PgPool) -> Self {
        Self { pool }
    }
}

impl TransactionFactory for SqlxTransactionFactory {
    async fn begin_transaction(&self) -> Result<Transaction<'_>, anyhow::Error> {
        let transaction = self
            .pool
            .begin()
            .await
            .context("failed to begin transaction")?;
        Ok(Transaction { inner: transaction })
    }

    async fn commit_transaction(&self, transaction: Transaction<'_>) -> Result<(), anyhow::Error> {
        transaction
            .inner
            .commit()
            .await
            .context("failed to commit transaction")?;
        Ok(())
    }

    async fn rollback_transaction(
        &self,
        transaction: Transaction<'_>,
    ) -> Result<(), anyhow::Error> {
        transaction
            .inner
            .rollback()
            .await
            .context("failed to rollback transaction")?;
        Ok(())
    }

    async fn with_transaction<'b, F, Fut, R, E>(&'b self, f: F) -> Result<R, E>
    where
        F: for<'a> FnOnce(&'a mut Transaction<'b>) -> Fut,
        Fut: Future<Output = Result<R, E>>,
        E: From<anyhow::Error>,
    {
        let mut tx = self.begin_transaction().await.unwrap();
        let result = f(&mut tx).await;

        match result {
            Ok(value) => {
                self.commit_transaction(tx).await;
                Ok(value)
            }
            Err(error) => {
                self.rollback_transaction(tx).await;
                Err(error)
            }
        }
    }
}


]]>
https://forum.rustycrate.ru/t/lifetime-issues-in-async-transaction-wrapper-with-closures-in-rust/1506#post_1 Sun, 16 Feb 2025 09:11:54 +0000 forum.rustycrate.ru-post-4086
Статические массивы Здравствуйте, спасибо за ответ!
Я не могу Вам предоставить информацию о компиляторах конкретно, потому что rust я поставил давно, и не парился по поводу статических массивов (именно примитивы раст, без библиотек и т.д.). Но потом мне необходимо было создать массив такого размера [[f64;3];125000] и компилятор выдавал переполнение стека. Я обновил rust update буквально на днях и обнаружил, что теперь данный массив не вызывает переполнение стека. Это всё разумеется на одной машине с той же операционной системе. Поэтому я и подумал, каковы могли быть изменения в rust и где про их можно прочесть.

]]>
https://forum.rustycrate.ru/t/staticheskie-massivy/1482#post_4 Wed, 23 Oct 2024 13:58:28 +0000 forum.rustycrate.ru-post-4056
Статические массивы Размер стека не зависит от языка программирования и версии компилятора, это свойство операционной системы.
Мне неизвестны изменения поведения для статических массивов в последних версиях компилятора, я думаю ничего не менялось, они по прежнему аллоцируются на стеке.

Тестируя на своей машине, переполение стека предсказуемо происходит между [[0.0; 10]; 100500] и [[0.0; 11]; 100500], т.е. между 8,040,000 и 8,844,000 байтами. Стандартный размер стека на Mac и Linux обычно равен 8 Мб, посмотреть его можно с помощью ulimit -s:

❯ ulimit -s
8176

В общем с моей стороны никаких изменений в языке нет, если вам известны какие-то две конкретные версии компилятора, у которых поведение отличается – предоставьте инструкции для воспроизведения.

]]>
https://forum.rustycrate.ru/t/staticheskie-massivy/1482#post_2 Wed, 23 Oct 2024 11:28:51 +0000 forum.rustycrate.ru-post-4054
Статические массивы При создании статического массива, например, размером [[f64;3];125000] компилятор выдавал переполнение стек памяти. Обновил rustup и теперь такой проблемы нет. Какова теперь память стека, и вообще какие изменения претерпели примитивы массивов?

]]>
https://forum.rustycrate.ru/t/staticheskie-massivy/1482#post_1 Mon, 21 Oct 2024 19:59:46 +0000 forum.rustycrate.ru-post-4053
Как этим всем пользоваться? Спасибо, друг! Суть уловил - дальше буду разбираться. :slightly_smiling_face:

]]>
https://forum.rustycrate.ru/t/kak-etim-vsem-polzovatsya/1440#post_5 Sun, 21 Jul 2024 22:09:52 +0000 forum.rustycrate.ru-post-4036
Как этим всем пользоваться? Между “запускайте rustup и следуйте инструкциям” и “cargo и работу”, есть ещё “Привет мир” :slight_smile:
Вообще тебе надо внимательно читать что там пишут, понимать и выполнять, тогда и понимание придёт как с этим работать. Каждую главу надо вдумчиво читать и понимать!

Программы можно писать где угодно, хоть в блокноте, но лучше например в vs code. Компилировать их можно как написано в инструкциях, через терминал. Либо можно загуглить, как это упростить в vs code.
Запускать программы можно через терминал с помощью cargo, либо запускать скомпилированный файл :slight_smile:
В любом случае освоить терминал придётся.

Так, ладно, надо чёткую инструкцию…
Открываешь блокнот, пишешь код, сохраняешь в файл main.rs
Открываешь терминал в папке с кодом (в винде 11 - находясь в папке нажимаешь правую кнопку мыши и потом жмёшь - открыть в терминале)
Как там 7-ке я не помню, но можно так - пуск - выполнить - там пишешь cmd. Открывается терминал. В терминале переходишь в папку с кодом используя команду CD - подробнее гугли
Ну вот, открыл терминал и пишешь команду из учебника rustc main.rs
И в этой же папке скомпилируется исполняемый файл .exe

Если через vs code будешь писать код, там сразу терминал в нужной папке открывается. Если установишь расширение rust-analyzer в vs code, то в cargo проектах сверху над кодом появятся кнопочки Run и Debug для запуска кода через них.

vs code - это надо загуглить и скачать отдельно

]]>
https://forum.rustycrate.ru/t/kak-etim-vsem-polzovatsya/1440#post_4 Mon, 01 Jul 2024 19:49:49 +0000 forum.rustycrate.ru-post-4032
Передача данных в процедурный макрос Для тренировки рекомендую повыполнять проекты из Proc macro workshop, мне кажется это один из лучших способов их изучать.

]]>
https://forum.rustycrate.ru/t/peredacha-dannyh-v-proczedurnyj-makros/1457#post_4 Tue, 04 Jun 2024 17:47:19 +0000 forum.rustycrate.ru-post-4026
Передача данных в процедурный макрос Так примерно и думал.
Задача - разобраться с макросами)
То есть, просто тренировка.

]]>
https://forum.rustycrate.ru/t/peredacha-dannyh-v-proczedurnyj-makros/1457#post_3 Tue, 04 Jun 2024 17:45:03 +0000 forum.rustycrate.ru-post-4025
Передача данных в процедурный макрос Добрый день.

Есть ли способ передать в процедурный макрос значение переменной, а не её имя?

Нет, потому что макросы исполняются на этапе компиляции, ещё до того, как у переменных есть какие-либо значения.

В чём состоит задача и почему решили использовать макрос вместо обычной функции?

]]>
https://forum.rustycrate.ru/t/peredacha-dannyh-v-proczedurnyj-makros/1457#post_2 Tue, 04 Jun 2024 17:31:53 +0000 forum.rustycrate.ru-post-4024
Передача данных в процедурный макрос Добрый день.
Подскажите, пожалуйста, как передать в макрос значение переменной?
Суть: есть переменная
let a = “abs”;
Есть макрос get_str, который, допустим, просто вставляет пробелы в переданные данные, чтобы получилось “a b s”.
Если вызывается так:
let b = get_str!(“abs”);
то все отрабатывает нормально.
Если же делаем так:
let b = get_str!(a);
то в макросе
let input = parse_macro_input!(item as LitStr);
у нас input получает значение “а”, что абсолютно не то, что хотелось бы.
Есть ли способ передать в процедурный макрос значение переменной, а не её имя?

]]>
https://forum.rustycrate.ru/t/peredacha-dannyh-v-proczedurnyj-makros/1457#post_1 Tue, 04 Jun 2024 17:25:49 +0000 forum.rustycrate.ru-post-4023
Как запустить приложение Slint в развёрнутом (maximized) режиме? Смог найти ответ самостоятельно. решение с потоками частично правильное, но нужно будет обернуть вызов set_maximized в функцию invoke_from_event_loop, рабочий код:

fn main() {
    let app = AppWindow::new().unwrap();
    let app_weak = app.as_weak();

    let thread = std::thread::spawn(move || {
        let app_copy = app_weak.clone();
        //Разворачиваем окнов в потоке событий slint
        slint::invoke_from_event_loop(move || app_copy.unwrap().window().set_maximized(true)).unwrap();

        //Выполняем тут какой ни будь код, который нужно выполнить по факту запуска приложения
        //Например: скрываем окно консоли свойственное для slint 
    });

    thread.join().unwrap();
    app.run().unwrap();
}

Так же event loop в slint запускается уже после отображения окна, так что в поток так же можно добавить любой код который мы бы хотели написать в on_ready

]]>
https://forum.rustycrate.ru/t/kak-zapustit-prilozhenie-slint-v-razvyornutom-maximized-rezhime/1455#post_2 Wed, 22 May 2024 15:23:02 +0000 forum.rustycrate.ru-post-4021
Как запустить приложение Slint в развёрнутом (maximized) режиме? Я разрабатываю десктопное приложение на rust и очень хочу, чтобы оно при запуске разворачивалось на всю рабочую область экрана (параметр maximized).
Однако я столкнулся с проблемой, если просто присвоить окну приложения slint этот параметр равный true и после запустить приложение, оно запустится в состоянии развёрнутого, но будет иметь стандартный размер, то есть запустится в левом верхнем углу, с соответствующим значком на тулбаре, но при этом с тем же размером, с которым оно запускается по умолчанию.

image

При этом функция MyApp.run() блокирует поток, из-за чего присвоить параметру нужное значение уже после запуска приложения не выходит.
Пробовал отображать окно перед изменением параметра, результат тот же. Пробовал делать это в отдельном потоке, ругается что не удаётся безопасно передать ссылку на приложение (как я понял это связано с тем что GUI-элементы должны быть доступны только в основном потоке). Чат GPT предложил использовать функцию slint on_ready, но ничего об этой функции я не нашёл, а код предложенный gpt-шкой просто не работает.
Подскажите что можно сделать в такой ситуации?

]]>
https://forum.rustycrate.ru/t/kak-zapustit-prilozhenie-slint-v-razvyornutom-maximized-rezhime/1455#post_1 Tue, 21 May 2024 14:23:22 +0000 forum.rustycrate.ru-post-4020
Изменение структур, хранящихся в векторе, в одной транзакции И опять полезли ошибки: error[E0554]: #![feature] may not be used on the stable release channel ; error[E0658]: use of unstable library feature ‘get_many_mut’
Установил nightly. Всё заработало. Еще раз спасибо)

]]>
https://forum.rustycrate.ru/t/izmenenie-struktur-hranyashhihsya-v-vektore-v-odnoj-tranzakczii/1449#post_4 Sat, 18 May 2024 09:30:01 +0000 forum.rustycrate.ru-post-4016
Изменение структур, хранящихся в векторе, в одной транзакции Спасибо. Теперь понятно, куда копать)

]]>
https://forum.rustycrate.ru/t/izmenenie-struktur-hranyashhihsya-v-vektore-v-odnoj-tranzakczii/1449#post_3 Sat, 18 May 2024 08:30:32 +0000 forum.rustycrate.ru-post-4013
Изменение структур, хранящихся в векторе, в одной транзакции

то есть, компилятор считает, что мы изменяем вектор market.persons, хотя нам надо только изменить находящиеся в этом векторе объекты.

Это не вполне верный вывод. С точки зрения Rust модификация любого элемента коллекции эквивалентна модификации всей коллекции целиком, так что компилятор корректно указывает на ошибку.

В данном конкретном случае ошибка компилятора защищает вас от так называемого алиасинга мутабельных ссылок – ситуации, когда две мутабельные ссылки указывают на одну и ту же область оперативной памяти. Если не знаете, что это значит и зачем это нужно, рекомендую доклад: https://youtu.be/ACW-7dktyDk

В данном случае компилятор не может доказать, что k != i – система типов просто не достаточно мощная. Вариантов решения несколько: (в произвольном порядке)

  1. Каким-либо образом отрефакторить код, чтобы брать две ссылки одновременно не требовалось. Точно ли изменение необходимо осуществлять одновременно? Возможно копирование будет достаточно дешевым, чтобы не брать вторую ссылку?
  2. Использовать unsafe и написать вспомогательный метод, который будет возвращать две независимые ссылки, сформированные и сырых указателей. Для вдохновления можно посмотреть на реализацию из следующего пункта.
  3. В nightly-компиляторе есть новый метод slice::get_many_mut который уже написан за вас и делает то, что нужно.
]]>
https://forum.rustycrate.ru/t/izmenenie-struktur-hranyashhihsya-v-vektore-v-odnoj-tranzakczii/1449#post_2 Thu, 16 May 2024 20:12:05 +0000 forum.rustycrate.ru-post-4012
Изменение структур, хранящихся в векторе, в одной транзакции Добрый день.
Новичок в Rust. Есть проблемы.
Есть объект market, в котором есть вектор persons, в котором хранятся структуры с данными Person. Мне необходимо изменить две структуры одновременно. Пытаюсь делать это с помощью следующего кода:
market.persons[k: usize].some_fn(&mut market.persons[i: usize]);

  • и ничего не получается. Выдает ошибку
    error[E0499]: cannot borrow market.persons as mutable more than once at a time

то есть, компилятор считает, что мы изменяем вектор market.persons, хотя нам надо только изменить находящиеся в этом векторе объекты.

Подскажите, пожалуйста, как корректно изменить структуры, хранящиеся в векторе, одновременно (в одной функции)?

]]>
https://forum.rustycrate.ru/t/izmenenie-struktur-hranyashhihsya-v-vektore-v-odnoj-tranzakczii/1449#post_1 Thu, 16 May 2024 18:08:33 +0000 forum.rustycrate.ru-post-4011
Как этим всем пользоваться? Что за getting started? Где всё это находится? В учебнике как-то кратко проскакивает, что запускайте rustup и следуйте инструкциям. И всё - дальше идёт уже про настройку cargo и работу.

Я понимаю, что вам там всё кажется очевидным. Но я, видимо, что-то не догоняю. Уже и С++ не кажется таким сложным - там, по крайней мере, со средой разработки всё понятно. Устал уже решать ребусы установки - хочется заняться непосредственно практическим изучением языка. :slight_smile: Можно, пожалуйста, ссылку куда-нибудь, где по порядку объясняется, как всё это установить и начать пользоваться.

]]>
https://forum.rustycrate.ru/t/kak-etim-vsem-polzovatsya/1440#post_3 Wed, 13 Mar 2024 22:24:21 +0000 forum.rustycrate.ru-post-4003
Как этим всем пользоваться? Эмм… Как раз таки эти очень важные темы и не опускаются, они занимают где-то пол-страницы “Getting started”, сразу за “Is Rust up to date?”.

]]>
https://forum.rustycrate.ru/t/kak-etim-vsem-polzovatsya/1440#post_2 Tue, 12 Mar 2024 21:23:33 +0000 forum.rustycrate.ru-post-4000
Как этим всем пользоваться? Наверное, вопрос прозвучит глупо - но, тем не менее, ответа нигде не нашёл. )) Вот установил я этот Руст (Windows 7 x64). Запустил rustup-init(64) - он там что-то прогрузил. Что дальше-то?? Как всем этим теперь пользоваться? )) В папке Руста ничего не добавилось. Накидало чего-то в папку пользователя - но там нет ничего запускаемого. Где писать программы, как их компилировать и запускать? Как вообще попасть теперь в среду разработки? Везде эти темы опускаются, как-будто там всё очевидно - а на деле даже начать разбираться не получается. ))

]]>
https://forum.rustycrate.ru/t/kak-etim-vsem-polzovatsya/1440#post_1 Tue, 12 Mar 2024 20:52:40 +0000 forum.rustycrate.ru-post-3999
Cargo rust, Nosleep помогите Привет всем, у меня 0 понимания во всем этом, но мне нужно запустить этот софт crates.io: Rust Package Registry у себя на пк.
система у меня windows 10 22h2

За помощь готов заплатить деньгами.

]]>
https://forum.rustycrate.ru/t/cargo-rust-nosleep-pomogite/1438#post_1 Fri, 01 Mar 2024 16:45:35 +0000 forum.rustycrate.ru-post-3997
Как собрать руст проект в оффлайн режиме Есть замечательный проект для поднятия локального зеркала crates
Panamax is a tool to mirror the Rust and crates.io repositories, for offline usage of rustup and cargo.

]]>
https://forum.rustycrate.ru/t/kak-sobrat-rust-proekt-v-offlajn-rezhime/1393#post_2 Sun, 11 Feb 2024 20:03:21 +0000 forum.rustycrate.ru-post-3995
Что-то непонятное на play.rust-lang.org работает а локально нет
play.rust-lang.org

Rust Playground

A browser interface to the Rust compiler to experiment with the language

]]>
https://forum.rustycrate.ru/t/chto-to-neponyatnoe-na-play-rust-lang-org-rabotaet-a-lokalno-net/1425#post_1 Sat, 04 Nov 2023 16:55:22 +0000 forum.rustycrate.ru-post-3983
Diesel ORM FK всем привет, есть вопрос:
В своей базе данных postgres для PRIMARY KEY полей решил
генерировать Uuid::new_4() id
Тип для данных айди я выбрал как VARCHAR (т.к. максимальное значение INT - 8 байт, а uuid - 16 байт)
Как теперь мне после транзакций принимать в Rust это поле id в типе Uuid?
Как вы работаете с uuid в diesel orm?

  • Вопрос: на что указывает данная ошибка:
    image
]]>
https://forum.rustycrate.ru/t/diesel-orm-fk/1424#post_1 Sat, 28 Oct 2023 13:37:28 +0000 forum.rustycrate.ru-post-3982
Rust и Imap ну, собственно, код:

extern crate imap;
extern crate native_tls;
use imap::client::Client;
use native_tls::TlsConnector;
fn main() {
    let imap_server = "imap.mail.ru";
    let imap_port = 993;
    let username = "*****@mail.ru";
    let password = "**********";
    let tls_connector = TlsConnector::new().unwrap();
    let client = Client::new(imap_server, imap_port);
    let mut session = client.login(username, password).unwrap();
    let mailbox = "INBOX";
    session.select(mailbox).unwrap();
    let mailbox_info = session.fetch("1:1", "FLAGS").unwrap();
    let unseen = mailbox_info.first().unwrap().flags.is_empty();
    if unseen {
        println!("${{alignr -8}}{{color grey}}пусто");
    } else {
        println!("${{alignr -10}}{{color green}}что-то есть");
    }
    session.logout().unwrap();
}

ошибка:

error[E0603]: module client is private
→ src/main.rs:3:11
|
3 | use imap::client::Client;
| ^^^^^^ private module
|
note: the module client is defined here
→ /home/digymonster/.cargo/registry/src/github.com-1ecc6299db9ec823/imap-2.4.1/src/lib.rs:86:1
|
86 | mod client;
| ^^^^^^^^^^

вот из этого:
rustc --explain E0603
ничего не понял

]]>
https://forum.rustycrate.ru/t/rust-i-imap/1408#post_3 Fri, 15 Sep 2023 09:18:31 +0000 forum.rustycrate.ru-post-3966
Rust и Imap Никак не бороть, в используемой версии imap структура Client доступна по импорту use imap::Client. С документацией можно ознакомиться по адресу imap - Rust, там есть и базовые примеры использования.

Кроме того, использовать extern crate в текущих версиях раста нет необходимости - это сильно устаревший сиетаксис, работать будет и без него.

]]>
https://forum.rustycrate.ru/t/rust-i-imap/1408#post_2 Fri, 15 Sep 2023 07:02:10 +0000 forum.rustycrate.ru-post-3965
Rust и Imap Совершенный новичек.
В наличии только:

  1. Блэнди Дж., Орендорф Дж. - Программирование на языке Rust
  2. Abhishek Chanda - Network Programming with Rust

Пытаюсь написать парсер электронной почты.
Нагуглил некий код начинающийся на:

extern crate imap;
extern crate native_tls;
use imap::client::Client;
use native_tls::TlsConnector;

карго выдает ошибку:

   Compiling mail v0.1.0 (/home/digymonster/codding/rust/mail)
error[E0603]: module `client` is private
  --> src/main.rs:4:11
   |
4  | use imap::client::Client;
   |           ^^^^^^ private module
   |
note: the module `client` is defined here
  --> /home/digymonster/.cargo/registry/src/github.com-1ecc6299db9ec823/imap-2.4.1/src/lib.rs:86:1
   |
86 | mod client;
   | ^^^^^^^^^^

For more information about this error, try `rustc --explain E0603`.
error: could not compile `mail` due to previous error

Файл Cargo.toml:

[package]
name = "mail"
version = "0.1.0"
edition = "2021"

[dependencies]
native-tls = "0.2"
imap = "2.4"

Как побороть?
Спасибо!

]]>
https://forum.rustycrate.ru/t/rust-i-imap/1408#post_1 Fri, 15 Sep 2023 01:03:34 +0000 forum.rustycrate.ru-post-3964
Как собрать руст проект в оффлайн режиме Есть rust проект grex https://github.com/pemistahl/grex
нужно собрать его в оффлайн режиме скажите пожалуйста как это сделать что надо скачать и куда положить до этого скачал сам рус установил его скачал зависимости результат тут https://global.discourse-cdn.com/business5/uploads/rust_lang/original/3X/9/b/9b478ec35ca420ef058ffe994a948826de568da4.png

]]>
https://forum.rustycrate.ru/t/kak-sobrat-rust-proekt-v-offlajn-rezhime/1393#post_1 Wed, 03 May 2023 12:52:43 +0000 forum.rustycrate.ru-post-3949
IP камера на Rust
alexsunny123:

thanks my issue has been fixed.

thanks my issue has been fixed.

]]>
https://forum.rustycrate.ru/t/ip-kamera-na-rust/461#post_6 Fri, 17 Mar 2023 12:50:20 +0000 forum.rustycrate.ru-post-3941
Присоединюсь к разработке проекта с целью обучения Мне нравится изучать что-то новое. Сейчас вникаю в спорт, ставки… Ищу подробную информацию что-то вроде Что значит тотал больше 1.75 в футболе - Агентство Информационных Сообщений Еще есть идея сделать обучающую программу, приложение. Но это только в планах.

]]>
https://forum.rustycrate.ru/t/prisoedinyus-k-razrabotke-proekta-s-czelyu-obucheniya/1017#post_5 Tue, 18 Oct 2022 06:58:46 +0000 forum.rustycrate.ru-post-3914
Ищу работу на полставки или разовую А я только учу Пайтон, наверно поздно начал, уже не успею достигнуть каких-то результатов, чтобы влиться в ИТ. Зато неплохо получается зарабатывать на ставках. Много писать не буду, подробнее по ссылке Но Пайтон не бросаю, может хоть что-то получится, хотя бы на фрилансе.

]]>
https://forum.rustycrate.ru/t/ishhu-rabotu-na-polstavki-ili-razovuyu/1039#post_2 Wed, 05 Oct 2022 05:34:41 +0000 forum.rustycrate.ru-post-3913
Ошибка вывода целого числа кажется, дернуть у строки .parse() обычно не так уж и геморройно

]]>
https://forum.rustycrate.ru/t/oshibka-vyvoda-czelogo-chisla/1358#post_5 Wed, 14 Sep 2022 10:13:13 +0000 forum.rustycrate.ru-post-3911
Ошибка вывода целого числа проблема была в том, что библиотеки обычно читают строку как строковый тип, эта библиотека может возвращать нужный тип

]]>
https://forum.rustycrate.ru/t/oshibka-vyvoda-czelogo-chisla/1358#post_4 Wed, 14 Sep 2022 05:43:15 +0000 forum.rustycrate.ru-post-3910
Ошибка вывода целого числа так и есть, писал, что использовал макрос read! из библиотеки text_io. Который следующее реализует
() => { $crate::try_read!(“{}”) };
($text:expr) => {{
(|| → std::result::Result<, $crate::Error> {
use std::io::Write;
std::io::stdout().flush().unwrap();
let try_read_var;
$crate::try_scan!($text, try_read_var);
Ok(try_read_var)
})()
}};
($text:expr, $input:expr) => {{
(|| → std::result::Result<
, $crate::Error> {
use std::io::Write;
std::io::stdout().flush().unwrap();
let try_read_var;
$crate::try_scan!($input => $text, try_read_var);
Ok(try_read_var)
})()
}};
);

]]>
https://forum.rustycrate.ru/t/oshibka-vyvoda-czelogo-chisla/1358#post_3 Wed, 14 Sep 2022 05:40:49 +0000 forum.rustycrate.ru-post-3909
Ошибка вывода целого числа Насколько помню, в std нет способа читать stdin без эхо - нужно использовать внешние библиотеки вроде termion.

]]>
https://forum.rustycrate.ru/t/oshibka-vyvoda-czelogo-chisla/1358#post_2 Tue, 13 Sep 2022 20:05:10 +0000 forum.rustycrate.ru-post-3908
Ошибка вывода целого числа написал код следующий:
use text_io::read;
fn main() {
let j: usize = read!();
let mut fib: Vec = vec![j.try_into().unwrap()];
fib.push(1);
fib.push(2);
fib.push(1);
for i in 3…j {
fib[i] = fib[i - 1] + fib[i - 2];
fib.push(fib[i]);
}

println!("{}", fib[j]);

}
для вычисления числа Фибоначчи, введя его номер,
Дело в том, что выводить число, которое я ввёл мне не надо, что и происходит.
Возможно проблема в макросе.
на форуме в первый раз

]]>
https://forum.rustycrate.ru/t/oshibka-vyvoda-czelogo-chisla/1358#post_1 Tue, 13 Sep 2022 19:38:48 +0000 forum.rustycrate.ru-post-3906
Zemeroth - двухмерная пошаговая игра Подзабросил, но надо бы собраться и доделать, да. Сейчас немного освоюсь в Армении и попробую вернуться к Земероту.

]]>
https://forum.rustycrate.ru/t/zemeroth-dvuhmernaya-poshagovaya-igra/532?page=3#post_48 Wed, 06 Jul 2022 12:29:17 +0000 forum.rustycrate.ru-post-3867
IP камера на Rust
maxlapshin:

there are no secrets here, we are talking about cameras based on hisilicon.

The most interesting thing is the internal organization of the streamer, because it has a lot of all sorts of futures, streams, control over the overflow of output buffers. That’s all we’ll try to tell you.

thanks my issue has been fixed.

]]>
https://forum.rustycrate.ru/t/ip-kamera-na-rust/461#post_5 Tue, 05 Jul 2022 11:17:00 +0000 forum.rustycrate.ru-post-3866
Zemeroth - двухмерная пошаговая игра Уже прошел почти год, я надеюсь вы не забросили игру.

]]>
https://forum.rustycrate.ru/t/zemeroth-dvuhmernaya-poshagovaya-igra/532?page=3#post_47 Tue, 21 Jun 2022 11:30:31 +0000 forum.rustycrate.ru-post-3863
Ggez rust Спасибо большое! Чтоб я делал без этого форума?

]]>
https://forum.rustycrate.ru/t/ggez-rust/1319#post_5 Wed, 15 Jun 2022 16:13:15 +0000 forum.rustycrate.ru-post-3862
Ggez rust
ru.wikipedia.org

Sokoban

Sokoban (Soko-Ban, яп. 倉庫番, сокобан — кладовщик) — двухмерная компьютерная игра-головоломка, в которой игроку необходимо расставить ящики по обозначенным местам лабиринта. Кладовщик одновременно может двигать только один ящик, толкая вперёд. Игра Sokoban была создана в 1981 году Хироюки Имабаяси, и издана в 1982 году японской компанией Thinking Rabbit[en]. Кроме того, компания выпустила три сиквела: Boxxle, Sokoban Perfect и Sokoban Revenge. Игра была реализована для множества компьютерных плат...

старая головоломка. оливия в книжке показывает как ее можно написать с использованием ggez.

]]>
https://forum.rustycrate.ru/t/ggez-rust/1319#post_4 Wed, 15 Jun 2022 16:10:50 +0000 forum.rustycrate.ru-post-3861
Ggez rust Простите, а что такое сокобан?

]]>
https://forum.rustycrate.ru/t/ggez-rust/1319#post_3 Wed, 15 Jun 2022 16:09:33 +0000 forum.rustycrate.ru-post-3860
Ggez rust Нигде - нет никого, кто видел бы смысл в ее переводе на РУССКИЙ и постоянной актуализации. Самое близкое, есть РУССКИЙ перевод книжки Оливии про сокобан:

https://sokoban.iolivia.me/ru/c01-00-intro.html

]]>
https://forum.rustycrate.ru/t/ggez-rust/1319#post_2 Wed, 15 Jun 2022 14:26:30 +0000 forum.rustycrate.ru-post-3859
Ggez rust Здравствуйте, а кто-нибудь знает библиотеку ggez для rust? Если да, то не могли ли вы сказать где найти к ней РУССКУЮ документацию?

]]>
https://forum.rustycrate.ru/t/ggez-rust/1319#post_1 Wed, 15 Jun 2022 14:18:50 +0000 forum.rustycrate.ru-post-3858
Библиотека для чисел с плавающей запятой с множественной точностью Минималистичная реализация для чисел с плавающей запятой с множественной точностью.
Числа могут содержать до 40 знаков после запятой с экспонентой в диапазоне -128…127. Библиотека включает основные функции, такие, например, как sqrt, pow, ln, sin, cos.

Ссылка: https://crates.io/crates/num-bigfloat

]]>
https://forum.rustycrate.ru/t/biblioteka-dlya-chisel-s-plavayushhej-zapyatoj-s-mnozhestvennoj-tochnostyu/1318#post_1 Wed, 15 Jun 2022 08:52:48 +0000 forum.rustycrate.ru-post-3857
Непонятная ошибка сборки проекта Мне почему-то кажется, что это ошибка самого компилятора. Компилятор слетел.

]]>
https://forum.rustycrate.ru/t/neponyatnaya-oshibka-sborki-proekta/1307#post_3 Sun, 22 May 2022 14:07:14 +0000 forum.rustycrate.ru-post-3850