C ++ 與 Rust:製作靈感來自 Rust 的解包類似的功能

https://levelup.gitconnected.com/c-vs-rust-crafting-an-unwrap-like-function-inspired-by-rust-6bca9cab32a8

C++ 與 Rust:受 Rust 啟發的 Unwrap-Like 函數製作

在 C++ 程式設計中,我們有時需要傳遞參考,而不是製作副本,或在需要參考的地方使用常數物件。為了解決這些問題,C++ 標準程式庫提供了三個有用的工具:std::cref、std::ref 和 std::reference_wrapper。此文章深入探討這些工具的目的、區別和實際應用。

此外,在 Rust 語言中經常實現 Unwrap 方法。我們如何在 C++ 中實現這一點?

我們可以參考 Apache Arrow 中的程式碼進行實現:

std::optional>
TransportStatusDetail::Unwrap(const Status& status) {
std::shared_ptr detail = status.detail();
if (!detail) return std::nullopt;
if (detail->type_id() != kTypeId) return std::nullopt;
return std::cref(arrow::internal::checked_cast(*detail));
}

隨後,我們可以通過以下方式從 Status 中提取實際的 TransportStatusDetail:

Status status(transportDetail);
auto result = Unwrap(status);

現在,讓我們逐個詳細探索每個方面並提供完整的範例程式碼。

via Rust on Medium

March 20, 2024 at 12:37AM

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *