원래 문제가 없는 프로그램이 컴파일이 불가능한 경우는 있을거라고 생각해요

예를 들면,

첫번째 인수의 라이프타임 'a 만 필요한 경우에
두번째 인수의 라이프타임까지 'a로 명시하여, 쓸데없이 의존성을 추가하는 경우
컴파일러는 존재하지도 않은 의존성을 검사해서 두번째 인수의 수명이 먼저 끝난다면 에러를 일으킬테니까요.


근데, 의존성을 고의적으로 추가하는 경우 외에도 라이프타임의 설정방식엔 은근히 자유도가 있는거 같아요.


이게, 라이프타임 명시에 여러가지 해답이 있는건지,
아니면 각각이 실제로 다른 코드인건지 뭔가 철학적인 의문이 들어서 질문 남깁니다.

저는 라이프타임에 정답이 있다고 생각해요.


위의 코드는

제가 the book의 1회차에 짠 방식의 라이프타임 명시법입니다.
그때에는 진짜 정신 오락가락 하면서 컴파일러한테 이러면 돼? 하면서 왜 그러면 될까 고민하는식으로 시행착오 끝에 짰었죠.


주석부분은, 현재 제가 정답이라고 생각하는 라이프타임 명시법입니다.


분명히 두번째는 정답이지만,
첫번째 코드에 대한 해석이 궁금합니다.

아무리 생각해도 첫번째 방식의 라이프타임 기술이, 런타임에 영향을 주지 않는거같은데 실제로 영향을안주는거 맞나요??

물론 impl블록이 확장될 때에 코드의 수정 용이성 측면에서 두번째 방식을 선택해야하긴 할텐데,
완성된 라이브러리안의 코드이며, 더이상의 수정을 생각하지 않은 상태를 가정할 때에를 논해볼게요.


저는 혹시나 실 코드가 (컴파일된 바이너리파일이) 라이프타임에 따라서 달라진다면,
메소드가 제네릭이냐 아니냐에 의한 차이에서 기인할거 같아요.