Size: a a a

Rust — русскоговорящее сообществo

2020 March 25

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
polunin.ai
хм. я бы посмотрел так:
1. файл в проекте?
2. есть ли ошибки в файле в других местах?
3. работает ли подсветка для этого типа в других файлах/функциях?
4. перезапуск иде.
5. очистка кеша.
6. если так и осталось, то сделать MRE и отправить ишью (можно прямо из ИДЕ отправлять)
ты прав. У меня после обновы макроса слетела настройка движка на дефолтный
источник

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
поставил экспериментальный, должно заработать
источник

K

Kitsu in Rust — русскоговорящее сообществo
red75prime
Может в MyEnum::Other всё неподходящее десериализовать
ну эт свой десериализатор писать, ладно уж
источник

r

red75prime in Rust — русскоговорящее сообществo
Kitsu
ну эт свой десериализатор писать, ладно уж
Свой десериализатор для складывания в Other не нужен. Там атрибут #[other] есть. Или я не так понял?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Хм, действительно есть, не знал. Но в любом случае придется новый вариант добавлять, который можно случайно заматчить
источник

A

Adv0cat in Rust — русскоговорящее сообществo
@incker Не знаю чо вам за nginx сразу начали рассказывать, когда вебсервак на rust можно в интернет спокойно ложить без nginx. Так вот, чтобы в интернете было видно этот сервак, вы должны из своего бинаря сделать демона и заставить демона слушать 80й порт, ну или 443, если https, обычно это 0.0.0.0:80. На сервере предварительно нужно этот порт открыть))
.env я кладу рядом с бинарем, так же как и статику, потому что статику я отдаю тоже через rust, но это уже дело ваше - как и через что отдавать. если собрались отдавать статику не через своего демона, а через что-то другое, то у вас не получится повесить на 80й или 443й два демона, соответственно только в таком случае нужно вешать nginx, а за ним и статику и демона на другом порту.
Но как по мне архитектурно правильно будет сверху для статики навесить CDN, который не будет часто запрашивать статику у вашего rust демона. Мне очень не нравится идея вешать nginx, перед rust, это ж не php… Плюс у вас тупо со старту удваиваются соединения в системе из-за nginx, ну кароче это скорее холиварная тема за и против nginx, мое дело было восполнить вопиющее отсутствие инфы по тому, как запустить Rust без всяких свистоперделок 😄
P.s. просто так от обычного юзера линукс не даст вам слушать 80й порт, нужно линуксу объяснять каждый новый раз, когда вы будете заменять файлик, что этот файлик может слушать такой порт вот такой командой sudo setcap CAP_NET_BIND_SERVICE=+eip /path_to_app/your_app_binary
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Adv0cat
@incker Не знаю чо вам за nginx сразу начали рассказывать, когда вебсервак на rust можно в интернет спокойно ложить без nginx. Так вот, чтобы в интернете было видно этот сервак, вы должны из своего бинаря сделать демона и заставить демона слушать 80й порт, ну или 443, если https, обычно это 0.0.0.0:80. На сервере предварительно нужно этот порт открыть))
.env я кладу рядом с бинарем, так же как и статику, потому что статику я отдаю тоже через rust, но это уже дело ваше - как и через что отдавать. если собрались отдавать статику не через своего демона, а через что-то другое, то у вас не получится повесить на 80й или 443й два демона, соответственно только в таком случае нужно вешать nginx, а за ним и статику и демона на другом порту.
Но как по мне архитектурно правильно будет сверху для статики навесить CDN, который не будет часто запрашивать статику у вашего rust демона. Мне очень не нравится идея вешать nginx, перед rust, это ж не php… Плюс у вас тупо со старту удваиваются соединения в системе из-за nginx, ну кароче это скорее холиварная тема за и против nginx, мое дело было восполнить вопиющее отсутствие инфы по тому, как запустить Rust без всяких свистоперделок 😄
P.s. просто так от обычного юзера линукс не даст вам слушать 80й порт, нужно линуксу объяснять каждый новый раз, когда вы будете заменять файлик, что этот файлик может слушать такой порт вот такой командой sudo setcap CAP_NET_BIND_SERVICE=+eip /path_to_app/your_app_binary
ты вот насоветуешь ему сейчас, а он из под рута сидит, чуешь чем пахнет? короче прежде чем что-то советовать в конфигурациях нужно быть самому уверенным что совет дойдёт до адресата в том виде в котором ожидается
источник

С

Сергей in Rust — русскоговорящее сообществo
Adv0cat
@incker Не знаю чо вам за nginx сразу начали рассказывать, когда вебсервак на rust можно в интернет спокойно ложить без nginx. Так вот, чтобы в интернете было видно этот сервак, вы должны из своего бинаря сделать демона и заставить демона слушать 80й порт, ну или 443, если https, обычно это 0.0.0.0:80. На сервере предварительно нужно этот порт открыть))
.env я кладу рядом с бинарем, так же как и статику, потому что статику я отдаю тоже через rust, но это уже дело ваше - как и через что отдавать. если собрались отдавать статику не через своего демона, а через что-то другое, то у вас не получится повесить на 80й или 443й два демона, соответственно только в таком случае нужно вешать nginx, а за ним и статику и демона на другом порту.
Но как по мне архитектурно правильно будет сверху для статики навесить CDN, который не будет часто запрашивать статику у вашего rust демона. Мне очень не нравится идея вешать nginx, перед rust, это ж не php… Плюс у вас тупо со старту удваиваются соединения в системе из-за nginx, ну кароче это скорее холиварная тема за и против nginx, мое дело было восполнить вопиющее отсутствие инфы по тому, как запустить Rust без всяких свистоперделок 😄
P.s. просто так от обычного юзера линукс не даст вам слушать 80й порт, нужно линуксу объяснять каждый новый раз, когда вы будете заменять файлик, что этот файлик может слушать такой порт вот такой командой sudo setcap CAP_NET_BIND_SERVICE=+eip /path_to_app/your_app_binary
тут всё очень зависит от задач, для которых используется rust и nginx. Nginx всё таки много чего умеет - балансировку, фильтрацию и т.п, не только статику раздавать.
источник

С

Сергей in Rust — русскоговорящее сообществo
А штуки с 80 портом делаются через понижение привилегий в подпроцессах, а не через capabilities
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
Adv0cat
@incker Не знаю чо вам за nginx сразу начали рассказывать, когда вебсервак на rust можно в интернет спокойно ложить без nginx. Так вот, чтобы в интернете было видно этот сервак, вы должны из своего бинаря сделать демона и заставить демона слушать 80й порт, ну или 443, если https, обычно это 0.0.0.0:80. На сервере предварительно нужно этот порт открыть))
.env я кладу рядом с бинарем, так же как и статику, потому что статику я отдаю тоже через rust, но это уже дело ваше - как и через что отдавать. если собрались отдавать статику не через своего демона, а через что-то другое, то у вас не получится повесить на 80й или 443й два демона, соответственно только в таком случае нужно вешать nginx, а за ним и статику и демона на другом порту.
Но как по мне архитектурно правильно будет сверху для статики навесить CDN, который не будет часто запрашивать статику у вашего rust демона. Мне очень не нравится идея вешать nginx, перед rust, это ж не php… Плюс у вас тупо со старту удваиваются соединения в системе из-за nginx, ну кароче это скорее холиварная тема за и против nginx, мое дело было восполнить вопиющее отсутствие инфы по тому, как запустить Rust без всяких свистоперделок 😄
P.s. просто так от обычного юзера линукс не даст вам слушать 80й порт, нужно линуксу объяснять каждый новый раз, когда вы будете заменять файлик, что этот файлик может слушать такой порт вот такой командой sudo setcap CAP_NET_BIND_SERVICE=+eip /path_to_app/your_app_binary
nginx - battle tested, hardened
your server - ONE BIG SECURITY HOLE

чем торчать в интернет - выбирайте уж сами
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
Сергей
А штуки с 80 портом делаются через понижение привилегий в подпроцессах, а не через capabilities
таки через bind caps
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
Сергей
А штуки с 80 портом делаются через понижение привилегий в подпроцессах, а не через capabilities
setcap ‘cap_net_bind_service=+ep’ /your/binary
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
и не надо никаких рутовых понижений привелегий, юникса объелись из 1970 года
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Boris Vinogradov
ты вот насоветуешь ему сейчас, а он из под рута сидит, чуешь чем пахнет? короче прежде чем что-то советовать в конфигурациях нужно быть самому уверенным что совет дойдёт до адресата в том виде в котором ожидается
Вы серьйозно думаете, что человек, который сидит под рутом имеет какие-то важные и екретные данные?))) Если вдруг ему что-то сделают, это будет очень хорошим уроком!))
источник

С

Сергей in Rust — русскоговорящее сообществo
Это тоже сильно depends, рутовые привилегии могут и для других вещей при старте потребоваться. Если не требуется - делайте setcap, только после bind не забывайте сбросить уже внутри процесса
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Adv0cat
Вы серьйозно думаете, что человек, который сидит под рутом имеет какие-то важные и екретные данные?))) Если вдруг ему что-то сделают, это будет очень хорошим уроком!))
вопрос в другом, что за ваш совет винить будут вас
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Boris Vinogradov
вопрос в другом, что за ваш совет винить будут вас
если бы я каждый раз переживал на счет того, что меня могут винит за мои советы, уже был бы миллионером)))
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Сергей
тут всё очень зависит от задач, для которых используется rust и nginx. Nginx всё таки много чего умеет - балансировку, фильтрацию и т.п, не только статику раздавать.
ну понятное дело, что это прям отдельный инструмент, но мой посыл был именно в том, что не нужно бездумно тыкать nginx сверху новичку, rust это не php, может и сам за себя постоять для простых вещей, а для сложных вещей уже выбираются инструменты более обдуманно
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Berkus Decker
nginx - battle tested, hardened
your server - ONE BIG SECURITY HOLE

чем торчать в интернет - выбирайте уж сами
nginx не избавляет вас от настройки портов, сетевого стека, файрвола, привилегий и прочей мишуры, поэтому не могу сказать, что уж прям есть большая разница между nginx и вашим сервером в плане сесурности, но то чо выбирать самому чей жопой стоять в интернет - это да!))
источник

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
Adv0cat
Вы серьйозно думаете, что человек, который сидит под рутом имеет какие-то важные и екретные данные?))) Если вдруг ему что-то сделают, это будет очень хорошим уроком!))
вы серьезно думаете, что человек который ловит уб читал документацию по актиксу?))) Если вдруг у него что-то сломается, это будет очень хорошим уроком!))
источник