172 похожих чатов

Всем привет) Подскажите, в карго есть возможность переопределить root-директорию, от которой

все относительные пути считаются в рантайме?

25 ответов

8 просмотров

Скорее всего можно через cargo.toml, почитай cargo book

Кирилл🦀-Дудник Автор вопроса
Санек Каравайчик
Скорее всего можно через cargo.toml, почитай cargo...

Читал несколько минут, заболела голова, решил попытать удачу и спросить тут)

Можно чуть конкретнее про задачу? И если возможно, код на playground залить

Санек Каравайчик
Можно чуть конкретнее про задачу? И если возможно,...

А ой, перепутал малясь, код не нужен, просто чуть конкретнее задачу

Кирилл🦀-Дудник Автор вопроса
Санек Каравайчик
Можно чуть конкретнее про задачу? И если возможно,...

Есть воркспейс, при запуске сервера хотелось бы, чтобы все пути файлов читались от папки воркспейса, а не от папки сервера

Кирилл🦀-Дудник Автор вопроса
Кирилл🦀 Дудник
screenshot Есть воркспейс, при запуске сервера хотелось бы, ч...

сходи на 1 уровень выше от папки текущего томла :)

Санек Каравайчик
https://github.com/rust-lang/cargo/issues/8410

Тут описано как можно всё организовать

Кирилл🦀 Дудник
screenshot Есть воркспейс, при запуске сервера хотелось бы, ч...

let workspace_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap(); самый тупой способ

Αλεχ Zhukovsky
let workspace_dir = std::path::Path::new(env!("CAR...

Да, но я уже нашёл в issues похожий случай в котором более подробное решение

Кирилл🦀-Дудник Автор вопроса
Санек Каравайчик
Тут описано как можно всё организовать

Это про зависимости) А я про то, что если я пишу в коде Path::new("./static/client.wasm") то этот путь должен строиться не от папки проекта, а от папки воркспейса, как будто я написал бы Path::new("./../static/client.wasm")

Кирилл🦀-Дудник Автор вопроса
Αλεχ Zhukovsky
let workspace_dir = std::path::Path::new(env!("CAR...

Да, я это понимаю, но я хочу глобально на уровне текущего крейта переопределить root-папку на уровень выше, чтобы Path::new() автоматом брал за основу родительскую папку

Кирилл🦀 Дудник
Да, я это понимаю, но я хочу глобально на уровне т...

Может какую нибудь обёртку тогда вокруг Path сделать? Знаю что тупо, но всё таки должно понимать

Кирилл🦀-Дудник Автор вопроса
Санек Каравайчик
Может какую нибудь обёртку тогда вокруг Path сдела...

Да, это сработает. Вариантов, на самом деле, много, но мне интересно было бы попробовать настроить это на уровне окружения. Просто прикол в том, что IDE это как-то делают, и я очень надеюсь, что toml-конфигурация как-то предоставляет такую возможность. Например, через те же переменные среды

Кирилл🦀 Дудник
Да, это сработает. Вариантов, на самом деле, много...

Попробую ещё карго бук полистать, может там есть что то

Кирилл🦀 Дудник
Да, это сработает. Вариантов, на самом деле, много...

Так что остаётся только пилить обёртку для Path::new

Кирилл🦀-Дудник Автор вопроса
Кирилл🦀 Дудник
Я еще поресёрчу, если что, отпишу)

Давай, а то мне даже самому стало интересно как это решить)

Кирилл🦀-Дудник Автор вопроса
Санек Каравайчик
Давай, а то мне даже самому стало интересно как эт...

Есть такой вариант) Он работает, но он работает не на уровне настроек крейта) std::env::set_current_dir("../").unwrap();

Кирилл🦀 Дудник
Есть такой вариант) Он работает, но он работает не...

Что то такое предлагали выше, видимо возможно только императивно определять откуда считать пути

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
Есть предложения, как подобное можно упростить?
Hemul GM
12
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
just use free version ?? pycharm has a free version
Fan / Ac
9
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Привет, не могли бы подсказать почему "A tree falls in a forest" не отображается в journalctl? openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1); syslog (LO...
•_• Asmanov 🎓
3
Карта сайта