code: def specific_file_rst_filename(self, source_filename: str) -> str:
          
          highest_code_to_target = relative_filename_within_dir(
              source_filename, self.highest_code_dir)
          bname = basename(source_filename)
          result = join(self.autodoc_rst_root_dir,
                        dirname(highest_code_to_target),
                        bname + EXT_RST)
          log.debug("Source {!r} -> RST {!r}", source_filename, result)
          return result
docs: Gets the RST filename corresponding to a source filename.
          See the help for the constructor for more details.
  
          Args:
              source_filename: source filename within current project
  
          Returns:
              RST filename
  
          Note in particular: the way we structure the directories means that we
          won't get clashes between files with idential names in two different
          directories. However, we must also incorporate the original source
          filename, in particular for C++ where ``thing.h`` and ``thing.cpp``
          must not generate the same RST filename. So we just add ``.rst``.