Примеры
Набор примеров, демонстрирующих возможности, предоставляемые tonic.
Для сборки этих примеров необходимо установить компилятор Protocol Buffers protoc, а также файлы ресурсов Protocol Buffers.
Установка зависимостей
Ubuntu:
sudo apt update && sudo apt upgrade -y
sudo apt install -y protobuf-compiler libprotobuf-dev
Alpine Linux:
sudo apk add protoc protobuf-dev
macOS:
Предполагается, что Homebrew уже установлен. (Если нет, см. инструкции по установке Homebrew на официальном сайте.)
brew install protobuf
Helloworld (Здравствуй, мир)
Клиент
$ cargo run --bin helloworld-client
Сервер
$ cargo run --bin helloworld-server
RouteGuide (Навигатор по маршрутам)
Клиент
$ cargo run --bin routeguide-client
Сервер
$ cargo run --bin routeguide-server
Authentication (Аутентификация)
Клиент
$ cargo run --bin authentication-client
Сервер
$ cargo run --bin authentication-server
Load Balance (Балансировка нагрузки)
Клиент
$ cargo run --bin load-balance-client
Сервер
$ cargo run --bin load-balance-server
Dynamic Load Balance (Динамическая балансировка нагрузки)
Клиент
$ cargo run --bin dynamic-load-balance-client
Сервер
$ cargo run --bin dynamic-load-balance-server
TLS (rustls)
Клиент
$ cargo run --bin tls-client
Сервер
$ cargo run --bin tls-server
Health Checking (Проверка работоспособности)
Сервер
$ cargo run --bin health-server
Server Reflection (Рефлексия сервера)
Сервер
$ cargo run --bin reflection-server
Tower Middleware (Промежуточное ПО Tower)
Сервер
$ cargo run --bin tower-server
Autoreloading Server (Сервер с автоматической перезагрузкой)
Сервер
systemfd --no-pid -s http::[::1]:50051 -- cargo watch -x 'run --bin autoreload-server'
Примечания:
Если вы используете функцию codegen, то следующие зависимости обязательны:
Для примера с автоперезагрузкой требуются следующие глобально установленные крейты:
Richer Error (Расширенная обработка ошибок)
Оба клиента и оба сервера делают одно и то же, но используют два разных подхода. Запустите один из серверов в одном терминале, а затем запустите клиенты в другом.
Клиент, использующий структуру ErrorDetails
$ cargo run --bin richer-error-client
Клиент, использующий вектор типов сообщений об ошибках
$ cargo run --bin richer-error-client-vec
Сервер, использующий структуру ErrorDetails
$ cargo run --bin richer-error-server
Сервер, использующий вектор типов сообщений об ошибках
$ cargo run --bin richer-error-server-vec