Примеры

Набор примеров, демонстрирующих возможности, предоставляемые 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