aboutsummaryrefslogtreecommitdiff
path: root/test/typeparam/issue49295.go
blob: f96c896eac0d472f82c03ba47682acbd339e6616 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// run

// Copyright 2021 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.

package main

import "io"

type Reader struct {
	buf []byte
}
type Token *[16]byte

func Read[T interface{ ~*[16]byte }](r *Reader) (t T, err error) {
	if n := len(t); len(r.buf) >= n {
		t = T(r.buf[:n])
		r.buf = r.buf[n:]
		return
	}
	err = io.EOF
	return
}

func main() {
	r := &Reader{buf: []byte("0123456789abcdef")}
	token, err := Read[Token](r)
	_, _ = token, err
}