// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build !nethttpomithttp2 package http import ( "reflect" ) func (e http2StreamError) As(target any) bool { dst := reflect.ValueOf(target).Elem() dstType := dst.Type() if dstType.Kind() != reflect.Struct { return false } src := reflect.ValueOf(e) srcType := src.Type() numField := srcType.NumField() if dstType.NumField() != numField { return false } for i := 0; i < numField; i++ { sf := srcType.Field(i) df := dstType.Field(i) if sf.Name != df.Name || !sf.Type.ConvertibleTo(df.Type) { return false } } for i := 0; i < numField; i++ { df := dst.Field(i) df.Set(src.Field(i).Convert(df.Type())) } return true }