+ return maybeIp.value();
+}
+
+Expected<IPAddressV4, IPAddressFormatError> IPAddressV4::tryFromBinary(
+ ByteRange bytes) noexcept {
+ IPAddressV4 addr;
+ auto setResult = addr.trySetFromBinary(bytes);
+ if (setResult.hasError()) {
+ return makeUnexpected(std::move(setResult.error()));
+ }
+ return addr;
+}
+
+Expected<Unit, IPAddressFormatError> IPAddressV4::trySetFromBinary(
+ ByteRange bytes) noexcept {
+ if (bytes.size() != 4) {
+ return makeUnexpected(IPAddressFormatError::INVALID_IP);
+ }