All checks were successful
		
		
	
	Test / Create distribution (push) Successful in 32s
				
			Test / Sandbox (push) Successful in 1m58s
				
			Test / Hakurei (push) Successful in 2m47s
				
			Test / Sandbox (race detector) (push) Successful in 3m56s
				
			Test / Planterette (push) Successful in 3m58s
				
			Test / Hakurei (race detector) (push) Successful in 4m31s
				
			Test / Flake checks (push) Successful in 1m17s
				
			This is useful for programs that take a long time to clean up. Signed-off-by: Ophestra <cat@gensokyo.uk>
		
			
				
	
	
		
			20 lines
		
	
	
		
			492 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			492 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package app
 | |
| 
 | |
| import (
 | |
| 	"strconv"
 | |
| 
 | |
| 	"hakurei.app/internal/app/state"
 | |
| )
 | |
| 
 | |
| func newInt(v int) *stringPair[int]            { return &stringPair[int]{v, strconv.Itoa(v)} }
 | |
| func newID(id *state.ID) *stringPair[state.ID] { return &stringPair[state.ID]{*id, id.String()} }
 | |
| 
 | |
| // stringPair stores a value and its string representation.
 | |
| type stringPair[T comparable] struct {
 | |
| 	v T
 | |
| 	s string
 | |
| }
 | |
| 
 | |
| func (s *stringPair[T]) unwrap() T      { return s.v }
 | |
| func (s *stringPair[T]) String() string { return s.s }
 |